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

3104 Commits

Author SHA1 Message Date
Jurko Gospodnetić
04faaa1831 Fixed a Boost Build bug - files included by a .rc file were being interpreted as sources instead of siblings for the .rc file. This effectively caused anything depending on the .rc file to get rebuilt every time if the included file had a newer timestamp then the .rc file including it. Problem reported by Pavel Machyniak <machyniak.at.gmail.com>.
[SVN r79143]
2012-06-27 19:33:01 +00:00
Jurko Gospodnetić
8ef637f823 Boost Build code cleanup - minor stylistic changes.
[SVN r79142]
2012-06-27 19:27:10 +00:00
Jurko Gospodnetić
fb8b750d9c Boost Build code cleanup - minor stylistic changes to synchronize sources to .c/.cpp & .rc scanner objects.
[SVN r79140]
2012-06-27 15:33:59 +00:00
Jurko Gospodnetić
cc6eb2bb6b Minor stylistic Boost Build xsltproc toolset code changes.
[SVN r79139]
2012-06-27 14:27:23 +00:00
Jurko Gospodnetić
887cde8664 Bumped up the Boost Jam version on the trunk to 2011.12.1 (i.e. bumped the patch level from 0 to 1) to be able to track which test runners updated to using the latest Boost Jam engine.
[SVN r79129]
2012-06-27 01:07:04 +00:00
Jurko Gospodnetić
24e362ffb2 Boost Jam code cleanup - internal bump_version.py support script now has better error checking and more robust version value construction in some cases.
[SVN r79128]
2012-06-27 01:01:58 +00:00
Jurko Gospodnetić
5edf0e45ee Minor stylistic Boost Build changes.
[SVN r79127]
2012-06-27 00:58:04 +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ć
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ć
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ć
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ć
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ć
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ć
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ć
a24a0fc7f9 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ć
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ć
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ć
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ć
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ć
d101dfff56 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ć
3ce44878f8 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
Jurko Gospodnetić
85219521b8 Boost Jam code cleanup - minor stylistic builtins.c module changes.
[SVN r79083]
2012-06-25 15:27:38 +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ć
cce2a98e9b Made Boost Jam preserve trailing whitespace when executing its raw commands on Windows same as it does for other OSs (just the leading whitespace and trailing all-whitespace lines get trimmed). Command files used with external shells now also again get the complete action content without any whitespace trimming. This partially reverts a recent change from revision 78997 and also fixes the module_actions.py Boost Build test broken by that revision.
[SVN r79081]
2012-06-25 14:34:33 +00:00
Jurko Gospodnetić
411315fef4 Boost Jam code cleanup - minor stylistic execnt.c module change.
[SVN r79080]
2012-06-25 14:10:56 +00:00
Jurko Gospodnetić
52e55fd455 Boost Jam code cleanup - minor stylistic execnt.c module changes.
[SVN r79079]
2012-06-25 14:06:35 +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ć
16b3c77d72 Boost Jam code cleanup - cmd_new() no longer does command string line length checking, removed duplicate cmd_new() invocation when a command was found to contain a too long line, corrected reusing targets & shell lists when constructing commands after rejecting a previously constructed one.
[SVN r79077]
2012-06-25 11:46:06 +00:00
Jurko Gospodnetić
a1d76d06a2 Boost Jam now first tries alternate command-file names before waiting for 250ms when it fails to open its intended command-file for writing (most likely due so some anti-virus software still holding it open). This speeds up command running in such 'overly eager anti-virus software' scenarios.
[SVN r79076]
2012-06-25 09:39:46 +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ć
783dfad810 Boost Jam code cleanup - ExecCmdCallback timing_info * parameter marked as pointer to const.
[SVN r79074]
2012-06-25 08:09:07 +00:00
Jurko Gospodnetić
7bc3bed307 Boost Jam code cleanup - execnt.c module no longer outputs its 'argv' related -d+4 debug output since its argv structure is just an intermediate structure contructed while preparing the final command string for passing to the CreateProcessA() Windows API. Actual final constructed command string still does get displayed as -d+4 debug output.
[SVN r79073]
2012-06-25 01:45:14 +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ć
f79fe7fd34 Boost Jam code cleanup - removed a no longer useful constant_percent constant. Its one usage has been inlined, and even that is planned to be removed.
[SVN r79071]
2012-06-25 01:10:27 +00:00
Jurko Gospodnetić
2541eb4cff Boost Jam code cleanup - updated Python related implementation to use the more efficient PyString_AS_STRING() API instead of PyString_AsString() when we already know we are passing it a valid Python string object.
[SVN r79070]
2012-06-25 00:59:47 +00:00
Jurko Gospodnetić
fe6d47c464 Updated Boost Jam's Cygwin-to-Windows path conversion implementation to use the new cygwin_conv_path() API introduced in Cygwin 1.7 when building using a new enough Cygwin version headers. This avoids depreciation warnings about the old cygwin_conv_to_win32_path() API being used when building with newer Cygwin versions. The new API seems to support paths longer than MAX_PATH and allows for much better error handling.
[SVN r79069]
2012-06-25 00:57:40 +00:00
Jurko Gospodnetić
605bc82e86 Boost Jam code cleanup - updated path_tmpdir() to return a string object instead of a raw C char pointer.
[SVN r79068]
2012-06-25 00:41:37 +00:00
Jurko Gospodnetić
58fb165500 Boost Jam code cleanup - minor stylistic changes.
[SVN r79067]
2012-06-25 00:33:54 +00:00
Jurko Gospodnetić
bc8c2abb37 Boost Jam code cleanup - minor stylistic changes.
[SVN r79066]
2012-06-24 21:42:48 +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ć
e56812f2f7 Boost Jam code cleanup - extracted code making the actual CreateProcessA() call in the execnt.c module into a separate invoke_cmd() function.
[SVN r79063]
2012-06-24 14:57:41 +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