Boost Testing :
Subject: Re: [Boost-testing] Boost regression on ARM system
From: Niklas Angare (li51ckf02_at_[hidden])
Date: 2014-09-19 21:33:19
"Sandeep" <sandeep.bvb_at_[hidden]> wrote:
> I need to run the boost regression tests on my Broadcom embedded box based
> on ARM architecture, which does not have Dev environment.
> So, for compiling the boost, I used cross compilation support and built
> boost lib on Linux x86 box for ARM architecture.
> $ vi ../tools/build/v2/b2 site-config.jam
> and in place of gcc added the following line
> using gcc: arm : /<location of compiler>/arm-linux-uclibcgnueabi-g++;
You can add the "using gcc..." line to ~/user-config.jam instead.
> I want to run these tests on my Broadcom box and just want to get them
> compiled on x86.
> How can I achieve this?
The key to this is the testing.launcher property of Boost.Build. Whatever
you set it to will be prepended to the command-line of each test. You can
see how Boost.Build runs tests here:
("$(>)" is the test executable)
You can create a program or script and have b2 send each test command-line
to it like this:
b2 testing.launcher=/path/to/script toolset=...
I guess the simplest way to use this is to write a script that just dumps
the command-lines to a file, allowing you to then manually upload the test
files to the target and run them. You'd need to pass
preserve-test-targets=on to b2 to prevent it from deleting the test
For best results, you'd want the script to transparently upload the test
executable to the target, run it, then transfer back the output and return
code and feed these back to b2. You may also want to have the script gather
dependencies and upload them as well, especially since some tests use
dynamic linking even if you set link=static. Some tests also use test files
that are passed on the command-line that need to be uploaded.
I've created a set of scripts that do all this using SSH. They are used to
run all Boost regression tests on ARM every day (runner NA-QNX650-SP1-ARM).
My scripts are partly specific to my environment and have only been tested
on QNX but shouldn't be too hard to adapt to Linux. I wouldn't mind sharing
but I'd like to clean them up slightly first.
Are you able to set up sshd on the target? How much RAM does it have? Does
it have a proper file system?
The one other example I've found is Antony Polukhin's script. It's specific
to Android and doesn't upload dependencies or test files though, only
executables. You can find it here: