[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