|
Boost Testing : |
Subject: Re: [Boost-testing] [EXTERNAL] Windows build failures
From: Belcourt, Kenneth (kbelco_at_[hidden])
Date: 2014-01-27 14:14:22
On Jan 26, 2014, at 11:43 PM, Tom Kent wrote:
> On Sun, Jan 26, 2014 at 10:44 PM, Belcourt, Kenneth <kbelco_at_[hidden]> wrote:
>
>>
>> Make sure to remove the boost_root directory before you rerun tests. There's a bug with regression.py where it doesn't update the boost_root directory if the --tag has changed. For example, if you run regression tests with --tag=master, then run tests again in the same directory but with --tag=develop, the boost_root directory is unchanged (still points to master). Your error could result from that.
>>
>
> Will running 'git checkout develop' in boost_root before calling
> run.py fix this? (I'm trying to minimize fresh downloads of the repo.)
No, that won't work, you'll get an git error if you try that (here's the error if you ran with --tag=master):
s937372:boost_root kbelco$ git checkout develop
error: pathspec 'develop' did not match any file(s) known to git.
I've got a pull request with the patch in regression.py but getting it into the code base is taking quite a while. Hoping that either I'm doing this wrong or that the process begins to speed up a bit once we get over the startup hurdles.
If you ran run.py with --tag=master, your boost_root should show this:
s937372:boost_root kbelco$ git branch -a
* master
remotes/origin/master
to rerun run.py with --tag=develop, you need to apply this patch to regression.py and then add option --skip-script-download to run.py.
s937372:tools_regression_src kbelco$ diff -u regression.py ../../boost/tools/regression/src/regression.py
--- regression.py 2014-01-27 12:04:06.000000000 -0700
+++ ../../boost/tools/regression/src/regression.py 2014-01-26 23:13:22.000000000 -0700
@@ -904,8 +904,11 @@
else:
if os.path.exists( os.path.join(git_root, ".git") ):
os.chdir( git_root )
+ self.git_command( 'remote', 'set-branches', '--add', 'origin',
+ branch)
self.git_command( 'pull', '--recurse-submodules' )
self.git_command( 'submodule', 'update')
+ self.git_command( 'checkout', branch)
if clean:
self.git_command( 'reset', '--hard' )
self.git_command( 'clean', '-fxd')
Here's the additional option to suppress overwriting the modified regression.py.
python run.py --tag=develop --skip-script-download
You can check that this works by looking at boost_root/.gitmodules file. If --tag=master was run, there's no sync module listed in boost_root/.gitmodules. If --tag=develop was run, then there's a sync module in listed in boost_root/.gitmodules. That's an easy way to check that run.py is using the branch corresponding to the --tag option (git branch -a is another way, along with git remote -v).
HTH
-- Noel