Commit Graph

12124 Commits

Author SHA1 Message Date
Jurko Gospodnetić
58f0fd6672 Added a new Boost Build/Jam -p command line option handling test.
[SVN r79124]
2012-06-26 20:27:59 +00:00
Jurko Gospodnetić
88b24aba84 Updated Boost Jam's child process output handling on Windows based on the -p command-line option to match the one used on Unix.
If -p option value 0 is specified (the default), the child's stdout & stderr output streams are both collected into a single pipe and sent merged to the build process's stdout output.

If any other -p option value is specified, the child's stdout & stderr output streams are collected separately and redirected based on the -p parameter value:
  1 - stdout to stdout, stderr forgotten
  2 - stdout forgotten, stderr to stderr
  3 - stdout to stdout, stderr to stderr.

[SVN r79123]
2012-06-26 19:44:47 +00:00
Jurko Gospodnetić
e7eddd3bfb Updated Boost Jam's child process output handling on Windows based on the -p command-line option to match the one used on Unix.
If -p option value 0 is specified (the default), the child's stdout & stderr output streams are both collected into a single pipe and sent merged to the build process's stdout output.

If any other -p option value is specified, the child's stdout & stderr output streams are collected separately and redirected based on the -p parameter value:
  1 - stdout to stdout, stderr forgotten
  2 - stdout forgotten, stderr to stderr
  3 - stdout to stdout, stderr to stderr.

[SVN r79123]
2012-06-26 19:44:47 +00:00
Jurko Gospodnetić
d040beb6c2 Boost Jam code cleanup - added symbolic constant names for read and write pipe end indices used in the running commands table data structure in the execnt.c module. Minor stylistic changes.
[SVN r79121]
2012-06-26 19:40:36 +00:00
Jurko Gospodnetić
4cbc63753e Boost Jam code cleanup - added symbolic constant names for read and write pipe end indices used in the running commands table data structure in the execnt.c module. Minor stylistic changes.
[SVN r79121]
2012-06-26 19: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ć
e09ccc984f 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ć
a690d471a4 Updated the Boost Build core_nt_cmd_line.py test to make it compatible with the ancient Python releases prior to Python version 2.5. It seems those versions do not support the 'x = 1 if condition else 2' construct and report it as a SyntaxError.
[SVN r79119]
2012-06-26 17:46:37 +00:00
Jurko Gospodnetić
6c63f9519b Updated the Boost Build core_nt_cmd_line.py test to make it compatible with the ancient Python releases prior to Python version 2.5. It seems those versions do not support the 'x = 1 if condition else 2' construct and report it as a SyntaxError.
[SVN r79119]
2012-06-26 17:46:37 +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ć
9e4cbd1017 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ć
8e61df4ecc 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ć
3c5398ca2c 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ć
95b13f83f7 Boost Jam code cleanup - reduced special handling needed for executing commands while the -n option is in effect. Now make_closure() gets called consistently after all executed commands (whether actually executed by the OS, faked due to the -n option or due to exec_check() previously reporting them as NO-OPs).
[SVN r79114]
2012-06-26 15:25:01 +00:00
Jurko Gospodnetić
c98e0d5e4c Boost Jam code cleanup - reduced special handling needed for executing commands while the -n option is in effect. Now make_closure() gets called consistently after all executed commands (whether actually executed by the OS, faked due to the -n option or due to exec_check() previously reporting them as NO-OPs).
[SVN r79114]
2012-06-26 15:25:01 +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ć
c9fdc14f55 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ć
88ef23e4a0 Boost Jam code cleanup - execnt.c module no longer needs to hold exit_code & exit_reason data in the running commands table structure for each of its spawned processes as those values are now read & used directly in a single exec_wait() call.
[SVN r79111]
2012-06-26 13:56:02 +00:00
Jurko Gospodnetić
2072515cc7 Boost Jam code cleanup - execnt.c module no longer needs to hold exit_code & exit_reason data in the running commands table structure for each of its spawned processes as those values are now read & used directly in a single exec_wait() call.
[SVN r79111]
2012-06-26 13:56:02 +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ć
d1edcc2be9 Boost Jam code cleanup - minor stylistic const correctness & comment changes.
[SVN r79110]
2012-06-26 13:49:06 +00:00
Jurko Gospodnetić
353ea4756e Corrected the Boost Build core_nt_cmd_line.py test failure caused by empty actions now getting reported to stdout correctly. Updated the test to make sure all the whitespace action content gets printed out correctly.
[SVN r79106]
2012-06-26 11:03:29 +00:00
Jurko Gospodnetić
a70726f44d Corrected the Boost Build core_nt_cmd_line.py test failure caused by empty actions now getting reported to stdout correctly. Updated the test to make sure all the whitespace action content gets printed out correctly.
[SVN r79106]
2012-06-26 11:03:29 +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ć
3e956219be 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ć
f7ac3e9810 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ć
a24a0fc7f9 Boost Jam code cleanup - Removed the unneeded CMD structure tail member.
[SVN r79102]
2012-06-26 10:36:21 +00:00
Jurko Gospodnetić
de95985946 Boost Jam code cleanup - Removed the unneeded CMD structure tail member.
[SVN r79102]
2012-06-26 10:36:21 +00:00
Jurko Gospodnetić
52eafb9eb5 Boost Jam code cleanup - minor stylistic changes.
[SVN r79101]
2012-06-26 10:30:14 +00:00
Jurko Gospodnetić
e87fae0285 Boost Jam code cleanup - minor stylistic changes.
[SVN r79101]
2012-06-26 10:30:14 +00:00
Jurko Gospodnetić
bca364c875 Cleaned up the Boost Build core_d12.py test a bit. Still failing with the current Boost Jam implementation.
[SVN r79100]
2012-06-26 10:25:00 +00:00
Jurko Gospodnetić
45790b7301 Cleaned up the Boost Build core_d12.py test a bit. Still failing with the current Boost Jam implementation.
[SVN r79100]
2012-06-26 10:25:00 +00:00
Jurko Gospodnetić
e17fa79213 Updated Boost Jam to execute commands directly on Windows when that is requested by setting the JAMSHELL variable to '%', the same as for Unix OSs, and not change the user's request under covers to running the command via the default shell if it is 8191 characters long or shorter. Renamed the related Boost Build core_nt_line_length.py test to core_nt_cmd_line.py and updated it with more detailed test cases.
[SVN r79097]
2012-06-25 23:01:59 +00:00
Jurko Gospodnetić
c5ab0d2e2c Updated Boost Jam to execute commands directly on Windows when that is requested by setting the JAMSHELL variable to '%', the same as for Unix OSs, and not change the user's request under covers to running the command via the default shell if it is 8191 characters long or shorter. Renamed the related Boost Build core_nt_line_length.py test to core_nt_cmd_line.py and updated it with more detailed test cases.
[SVN r79097]
2012-06-25 23:01:59 +00:00
Jurko Gospodnetić
7c60279557 Updated Boost Jam's Windows shell I/O redirection & quote character (<>|'") detection to correctly recognize an escaped escape as regular character and not a possible start for a new escape sequence. Added more related internal unit tests.
[SVN r79093]
2012-06-25 21:41:24 +00:00
Jurko Gospodnetić
d1e0fb099a Updated Boost Jam's Windows shell I/O redirection & quote character (<>|'") detection to correctly recognize an escaped escape as regular character and not a possible start for a new escape sequence. Added more related internal unit tests.
[SVN r79093]
2012-06-25 21:41:24 +00:00
Jurko Gospodnetić
b207d857ca Fixed a Boost Jam bug on Windows where it would incorrectly interpret shell I/O redirection characters <>| and quote characters "' when deciding whether a command can be executed without an external shell if the first non-whitespace character in the command is a quote character (either single or double).
[SVN r79091]
2012-06-25 20:38:29 +00:00
Jurko Gospodnetić
3c4e61983b Fixed a Boost Jam bug on Windows where it would incorrectly interpret shell I/O redirection characters <>| and quote characters "' when deciding whether a command can be executed without an external shell if the first non-whitespace character in the command is a quote character (either single or double).
[SVN r79091]
2012-06-25 20:38:29 +00:00
Jurko Gospodnetić
bbf28cff1f Boost Jam code cleanup - minor stylistic make1.c module changes (line wrapping).
[SVN r79089]
2012-06-25 16:38:43 +00:00
Jurko Gospodnetić
561913e8cc Boost Jam code cleanup - minor stylistic make1.c module changes (line wrapping).
[SVN r79089]
2012-06-25 16:38:43 +00:00
Jurko Gospodnetić
d101dfff56 Boost Jam code cleanup - minor stylistic make1.c module changes.
[SVN r79088]
2012-06-25 16:34:57 +00:00
Jurko Gospodnetić
f3cede7f28 Boost Jam code cleanup - minor stylistic make1.c module changes.
[SVN r79088]
2012-06-25 16:34:57 +00:00
Jurko Gospodnetić
2800597995 Boost Jam code cleanup - rearranged popping state off the main build state machine stack after executing an external process command so that we do not use data from a freed state node. Freed state nodes actually get transferred to some 'freed state node list' so they still exist and this was not causing access violations but it was still a smell.
[SVN r79087]
2012-06-25 16:29:57 +00:00
Jurko Gospodnetić
8fd3f0ecce Boost Jam code cleanup - rearranged popping state off the main build state machine stack after executing an external process command so that we do not use data from a freed state node. Freed state nodes actually get transferred to some 'freed state node list' so they still exist and this was not causing access violations but it was still a smell.
[SVN r79087]
2012-06-25 16:29:57 +00:00
Jurko Gospodnetić
3ce44878f8 Boost Jam code cleanup - minor stylistic execnt.c module comment change.
[SVN r79085]
2012-06-25 15:35:47 +00:00
Jurko Gospodnetić
bc395d5f25 Boost Jam code cleanup - minor stylistic execnt.c module comment change.
[SVN r79085]
2012-06-25 15:35:47 +00:00
Jurko Gospodnetić
3f05f021da Fixed a bug in Boost Jam's UPDATE_NOW builtin rule causing it to disable the -q option when requested to disable the -n option. This was also causing the -q option to be permanently disabled when requested to disable both -q & -n options.
[SVN r79084]
2012-06-25 15:34:17 +00:00