diff options
Diffstat (limited to 'tools/build/v2/test/core_parallel_multifile_actions_2.py')
-rwxr-xr-x | tools/build/v2/test/core_parallel_multifile_actions_2.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tools/build/v2/test/core_parallel_multifile_actions_2.py b/tools/build/v2/test/core_parallel_multifile_actions_2.py new file mode 100755 index 0000000000..aae0fe26e6 --- /dev/null +++ b/tools/build/v2/test/core_parallel_multifile_actions_2.py @@ -0,0 +1,72 @@ +#!/usr/bin/python + +# Copyright 2008 Jurko Gospodnetic, Vladimir Prus +# Copyright 2011 Steven Watanabe +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + +# Added to guard against a bug causing targets to be used before they +# themselves have finished building. This used to happen for targets built by a +# multi-file action that got triggered by another target, except when the target +# triggering the action was the first one in the list of targets produced by +# that action. +# +# Example: +# When target A and target B were declared as created by a single action with +# A being the first one listed, and target B triggered running that action then +# while the action was still running, target A was already reporting as being +# built causing other targets depending on target A to be built prematurely. + +import BoostBuild + +t = BoostBuild.Tester(pass_toolset=0, pass_d0=False) + +t.write("sleep.bat","""@setlocal +@echo off +@REM timeout /T %1 /NOBREAK >nul +ping 127.0.0.1 -n 2 -w 1000 >nul +ping 127.0.0.1 -n %1 -w 1000 >nul +@endlocal +@exit /B 0 +""") + +t.write("file.jam", """ + + if $(NT) + { + SLEEP = @call sleep.bat ; + } + else + { + SLEEP = sleep ; + } + + actions link + { + $(SLEEP) 1 + echo 001 - linked + } + + link dll lib ; + + actions install + { + echo 002 - installed + } + + install installed_dll : dll ; + DEPENDS installed_dll : dll ; + + DEPENDS all : lib installed_dll ; +""") + +t.run_build_system("-ffile.jam -j2", stdout="""...found 4 targets... +...updating 3 targets... +link dll +001 - linked +install installed_dll +002 - installed +...updated 3 targets... +""") + +t.cleanup() |