Now that the tests work in py2 or p3 we don't set py version in AP. This
allows for dealing with the AP images that don't have a way to set the
py version.
Various restructure of test framework handling of paths to avoid duplicate path editing which caused failed tests. Adjust many tests to deal with added subdirectories in build outputs now that toolset requirements are active.
Related changes:
* BoostBuild.Tester & TestCmd.TestCmd interfaces now accept external process parameters as a list of strings, thus avoiding problems with parsing arguments containing spaces.
* Avoided a potential process hang in case an external process being run prints out enough output to fill up the OS's pipe buffer (OS would pause the process until someone read the data from the pipe but the testing framework would not do this until the process in question had terminated).
[SVN r79448]
* If a generator was given a source it could not handle, it used to return
that source together with generated targets. This was nice for some use
cases, but no very nice for others, and this behaviour could not be turned
off. One use case where it worked bad was:
lib plugin : plugin.cpp helper ;
lib helper : helper.cpp ;
On windows, 'plugin' would link to the 'import library' and pass the DLL
target though. So, when installing 'plugin', we'd also install 'helper.dll',
and it was not possible to do anything about it.
* If we asked generators.construct to produce sources of type CPP,
and the selected generator produced both targets of type CPP, and of
some other type, we'd try again to convert those other targets to CPP.
This simply complicated the logic for no good reason.
* Most generator function had 'multiple' parameter, which function
was long forgotten by anybody.
As a bit of history, I believe some of the above decisions were due to a
certain use case:
CPP <------- WHL
\
WD
/
CPP <------- DLP
Here, a source file is converted to two targets with one command, and each
produced file is converted to CPP. Our generators search would notice that
there are two generators for CPP: the WHL->CPP and DPL->CPP
generators. Neither is better that the other so both are tried, and produce
(CPP, DPL) and (CPP, WHL) pairs of targets. To avoid reporting an ambiguity,
we'd try to convert, DLP to CPP and WHL to CPP, do it successfully, notice
that produced targets are the same and decide that there's no ambiguity.
However, this is rather complex logic for a relatively rare case. It can
be handled by writing another WD->CPP generator that would handle
disambiguation itself.
This commit has one user-visible change. The code:
exe a : a.cpp b ;
obj b : b.cpp helper;
lib helper ;
No longer works -- the 'a' target won't link to 'helper'. However, this is
pretty stange code and worked before almost by accident.
[SVN r29361]
options to the linker.
* tools/builtin.jam
(lib-target-class.compute-usage-requirements): Add xdll-path
properties instead of dll-path. Add them unconditionally,
not only when hardcode-dll-paths is true.
(linking-generator.run): When hardcode-dll-paths is true, add
dll-path property for each xdll-path property.
* tools/gcc.jam
Convert xdll-path properties into -rpath-link option.
[SVN r21560]
we need to bypass <library-path> property, as well.
* tools/builtin.jam
(lib-target-class.compute-usage-requirements): The above change.
* build/virtual-target.jam
(subvariant.set-usage-requirements, subvariant.usege-requirements):
New methods.
(abstract-file-target.dg): Don't allow changing the value.
* build/targets.jam
(basic-target.generate): Explicitly don't change value of 'dg'.
[SVN r20655]
* new/builtin.jam
(lib-generator): Remove.
(lib-target-class): New class. Target class is more powerfull then
generator, here.
* new/generators.jam
(construct): New argument 'return-all'.
* bew/property-set.jam
(property-set.add-raw): New method.
[SVN r18917]
the same properties. Thanks to Andre Hentz for finding this bug and
providing the test case.
* new/builtin.jam
(searched-lib-generator.run): Pass the result through
'virtual-target.register'.
* test/searched_lib.py: Add new test.
[SVN r18247]
* new/builtin.jam: Associate obj and lib extension with OBJ and
STATIC_LIB target types, to handle the above combination. The gcc
toolset overrides these extension explicitly.
* new/msvc.jam
(archive): Use bash syntax on cygwin.
[SVN r18210]
* new/builtin.jam
- register builtin.response-generator with 'register-linker', to
take advantange of 'link-action'. Convert <library-path>,
<find-static-library> and <find-shared-library> into on-target
variables using toolset.flags.
(builtin.response-file) Output variables for library path to response
file.
(searched-lib-generator.run): Assign 'null-action' instance to the
generated target, to carry properties. Correct prototype and workaround
some, as-yet-unknown problem.
* test/searched_lib.py: New test (added by me).
[SVN r18121]