[CMake] Scripting of ctest: pb with update stage and CVSCOMMAND
Eric BOIX
eboix at ens-lyon.fr
Wed Jul 5 10:23:49 EDT 2006
Dear ctest (and cmake) users,
I have set up a ctest script in the way illustrated by the "CTest Scripting"
section of cmake's wiki i.e.
http://www.cmake.org/Wiki/CMake_Scripting_Of_CTest
(in order to automatize submissions to Dart2).
Because I'm "subverting" an account for dart continuous builds I need to
authenticate my cvs updates through a "ssh -i $HOME/.ssh/my-cheat-key"
context (see the "ubertrick" described by the page
http://www.liniac.upenn.edu/sysadmin/security/cvs-ssh.html
for details).
Anyhow, my CTest script contains a line that goes like
SET( CTEST_ENVIRONMENT "export CVS_RSH=$ENV{HOME}/cvs_rsh_trick" )
and I tested my ssh-keys manually and everything looks fine. But, now
when I launch my ctest script (with the "-VV -debug" options), I get the
following Update stage:
[...]
Run ctest command: /home/eboix/local/bin/ctest -D Continuous
Site: ble.ens-lyon.fr
Build name: Debian-GCC_3.2.5-Batch-MMA-Docs
Create new tag: 20060705-1247 - Continuous
Start processing tests
Updating the repository
Updating the repository:
/home/eboix/DashboardDiet/cvs/GRAAL/devel/diet/diet
Use CVS repository type
Gathering version information (each . represents one updated file):
Project is up-to-date
!!!! Update with command: "/usr/bin/cvs" -z3 update -d -A -P failed
Error(s) when updating the project
Output:
[...]
Apparently, there is a first "cvs update" since there is the output
"Project is up-to-date", but then a second cvs seems to be triggered !?
My first question is:
what triggers the SECOND "cvs update" command ?
[i.e. what triggers the line that I prefixed with "!!!!" in the above log ?]
My second question goes:
what are the connexions between the CVSCOMMAND cmake's internal variable
and ctest's scripting variable CTEST_CVS_COMMAND. Are these two variables
linked or redundant ?
Thanks for any help or clue,
Yours,
Eric Boix.
----------------- Deep down under the hood gory details:
Context: ctest version 2.4-patch 2
One should notice that this "second pass" of cvs update is NOT triggered
if I launch ctest manually: from the build directory when I launch
ctest -D ExperimentalUpdate
I get the following clean output
Start processing tests
Updating the repository
Updating the repository:
/home/eboix/DashboardDiet/cvs/GRAAL/devel/diet/diet
Use CVS repository type
Gathering version information (each . represents one updated file):
Project is up-to-date
In order to understand what was happening, I went chasing down the
"/usr/bin/cvs" string. It seems that the "Update with command" comes from
from the BuildRep/DartConfiguration.tcl script, which has a section that
goes:
# Generic update command
UpdateCommand: /usr/bin/cvs
UpdateOptions: -d -A -P
UpdateType: cvs
where the UpdateCommand corresponds to the CVSCOMMAND internal variable.
Since I was suspecting some trouble with the CVS_RSH environment variable
I tried to alter my original ctest script with an additional CACHE
COMMAND i.e. something that goes:
SET( CTEST_INITIAL_CACHE "
CVSCOMMAND:STRING=export CVS_RSH=$ENV{HOME}/cvs_rsh_trick && /usr/bin/cvs
)
and indeed what I nicknamed the "second invocation" changes and I get the
following output:
Updating the repository
Updating the repository:
/home/eboix/DashboardDiet/cvs/GRAAL/devel/diet/diet
Use CVS repository type
!!!! No such file or directory
Gathering version information (each . represents one updated file):
Project is up-to-date
Update with command: "export CVS_RSH=/home/eboix/DashboardDiet/cvs_rsh_dart && /usr/bin/cvs )" -z3 update -d -A -P failed
I really wonder what related CVSCOMMAND cmake's internal variable and
CTEST_CVS_COMMAND ctest's scripting variable. Hummmmm...
Hey, thanks for reading all the above :-)
More information about the CMake
mailing list