Greetings Farid.
The nightly testing infrastructure is primarily my domain. The
mechanics of the system are such that a copy of the source tree is
synced down from version control, and bundled into an archive. This
archive is then retrieved by a build server, and built using a glue
script which is provided with instructions on what to build using a
build specification file.
The design of the infrastructure makes it difficult to inject a patch
into the source tree, prior to the archive being created. It might be
possible to apply the patch to the expanded archive prior to the start
of the build process, but the presence of the patch utility on the build
servers can't be assumed.
A different tactic that could have been taken would be to include the
patched files as part of the files pulled from the local version control
system (perforce), but the local repository is retrieved prior to the
retrieval from subversion. I believe this would result in the files
from subversion overwriting those from perforce.
The final tactic that could be taken is to manually build the archive,
applying the patch prior to creating the archive and posting it to the
automated build system. I will do this prior to going to lunch, but the
next time the archive is rebuilt after a changes, this patch will be
removed from the archive.
--Andrew Black
Farid Zaripov wrote:
Attached is a patch to the windows build infrastructure.
Martin or Andrew: can someone apply that patch to the night build
system to test the changes before I commit?
ChangeLog:
* build.wsf: New script file to build specified configuration
* configure.wsf (configure): Check if the environment variable
exist before removing; use MT DLL runtime instead of ST static
runtime in ST DLL solution configurations
* devenv_consts.js: Added new constants
* generate.wsf: Removed unused BUILDTYPE option from usage text;
by default don't generate projects for build and test locales;
generate additional solution files (stdlib + examples;
stdlib + rwtest + tests; stdlib + utils + locales;
stdlib + utils + locale tests;
stdlib + utils + run_examples + run_tests); use new build.wsf
script in generated build batch file
* makelog.wsf (makelog): Updated according to new directory structure
* projectdef.js (InitVSObjects): Added freedte parameter, don't free
dte object if freedte == false;
(projectCreateVCProject): Use MT DLL runtime instead of ST static
runtime in ST DLL solution configurations;
(projectCreateProjectDefsFromFolder): Add name of subfolder to the
OutDir only if shiftOutDir is true;
(projectCreateTestLocalesDef): New function to generate project for
perform all locale tests in one shot;
* projects.js (CreateProjectDefs): Added generation of the 3 projects:
.stdcxx_runexamples; .stdcxx_runtests; .stdcxx_testlocales. Now
returns array of the sets of projects (configure, stdlib, rwtest,
utils, examples, run_examples, tests, run_tests, locales,
locale_tests)
* run_locale_utils.wsf (Cleanup): New function to remove
temporary folder
(Exit): New function to exit from script with cleanup
(CreateFolder): New function to create directory three
(dump_charmap): New function to dump the charmap of a locale
(dump_locale): On error exited script with the same non-zero
exit status as the locale utility
(generate_locale): Used Exit function
(test_locale): Called dump_charmap to produce the charmap source
from the locale database at each of the three stages. Used this
charmap source to create a locale in each subsequent stage.
Placed the files created at each stage in separate directories
named stage.1 through stage.3.
(run_locale_utils): Avoided deleting stage directories when
the -n option is set
* runall.wsf: Parameter INOUTDIR now is optional; removed unused
parameter COPYRWTESTDLL;
(readOutFile): check manual and tutorial subfolders when searching
example requested output file;
(runWithChecks, runNoChecks): Removed as unused;
(runAllExamples): Rewritten to use exec utility in packet mode.
* summary.js (saveBuildInfoTable): encode symbols in example output
before saving them to HTML file
(readBuildLog): Added temporary loop to check the run-time error
"runall.wsf(59, 6) Microsoft JScript runtime error: Permission denied"
Farid.