I've made the following changes to get it work for now:
1) Added a step to all p8_* factories:
It is to remove the <builder>/build subdir after the test.
It is the very last step, after all archiving, uploads etc., so it should be safe; and it's set to be executed always, even when the build fails.
Before that, the directory was only removed at the beginning of the corresponding test.
2) Added the following auxiliary step to p8_* package factories:
It is to facilitate the previous change. I suppose it's needed since the bintar factories had it already.
3) For each p8_* factory, Added git clean in getCompileStep before running cmake:
Explanation:
For each builder (but not for each branch!) there is a persistent folder <common_path>/<builder_name>/source. When a build for a particular revision is run, it goes to the folder, resets it to the required revision, fetches etc.. When it's done, it copies the entire <common_path>/<builder_name>/source dir to <common_path>/<builder_name>/build and builds there.
So, technically the source tree should be clean of all build stuff. Apparently, it is not always the case, e.g. it's possible that somebody builds there manually. If it happens, the folder will contain previously built binaries and CMakeCache.txt, all of which can conflict with the current build attempt. If it conflicts badly, e.g. CMakeCache.txt belongs to a different version, it's not that bad, because the build just fails right away with a proper message; it gets more complicated when the folder contains unexpected binaries, e.g. somebody ran a build in source with default options, so it built all engines as dynamic libraries; then, the buildbot build attempts to build without Connect engine, and really does so, but ha_connect.so still exists in the folder, gets picked up by MTR, which causes all kinds of oddities. Both situations actually happened already. So, adding git clean is supposed to protect from this.
4) Commented out xtra test, as requested.
I've made the following changes to get it work for now:
1) Added a step to all p8_* factories:
f_p8_rhel6_bintar.addStep(RemoveDirectory( name="remove_build", dir=WithProperties("%(distdirname)s"), alwaysRun=True));It is to remove the <builder>/build subdir after the test.
It is the very last step, after all archiving, uploads etc., so it should be safe; and it's set to be executed always, even when the build fails.
Before that, the directory was only removed at the beginning of the corresponding test.
2) Added the following auxiliary step to p8_* package factories:
f_p8_trusty_deb.addStep(SetPropertyFromCommand( property="distdirname", command=["sh", "-c", WithProperties("pwd")], ))It is to facilitate the previous change. I suppose it's needed since the bintar factories had it already.
3) For each p8_* factory, Added git clean in getCompileStep before running cmake:
Explanation:
For each builder (but not for each branch!) there is a persistent folder <common_path>/<builder_name>/source. When a build for a particular revision is run, it goes to the folder, resets it to the required revision, fetches etc.. When it's done, it copies the entire <common_path>/<builder_name>/source dir to <common_path>/<builder_name>/build and builds there.
So, technically the source tree should be clean of all build stuff. Apparently, it is not always the case, e.g. it's possible that somebody builds there manually. If it happens, the folder will contain previously built binaries and CMakeCache.txt, all of which can conflict with the current build attempt. If it conflicts badly, e.g. CMakeCache.txt belongs to a different version, it's not that bad, because the build just fails right away with a proper message; it gets more complicated when the folder contains unexpected binaries, e.g. somebody ran a build in source with default options, so it built all engines as dynamic libraries; then, the buildbot build attempts to build without Connect engine, and really does so, but ha_connect.so still exists in the folder, gets picked up by MTR, which causes all kinds of oddities. Both situations actually happened already. So, adding git clean is supposed to protect from this.
4) Commented out xtra test, as requested.