Skip to content
Felix S. Klock II edited this page Jul 28, 2013 · 1 revision

Dart is a repository for storing the results of software build-and-test cycles.

The Dart server is a Java program acting as a daemon process that Felix starts on one of the CCIS machines.

  • Felix starts the Dart server on uighur.ccs.neu.edu.
    • This address needs to be kept in sync with the scripts that submit the builds (or we need to set up a forwarding proxy, like how larceny.ccs.neu.edu/trac and larceny.ccs.neu.edu/dart forwards on to other machines that are CCIS maintained.
  • The script itself can be found in /home/pnkfelix/bin/run-dart; its really short though, all it does is:

cd /home/pnkfelix/Dart
java -jar /home/pnkfelix/jars/DartServer.jar -r -R TestServer dart
  • To run the script, Felix invokes

% nohup ~/bin/run-dart
 He is not 100% certain that the `nohup` part is necessary.  Do not be surprised if attempts to disconnect from `uighur` after starting the script do not seem to work (Felix just kills the xterm window when it looks like the attempt to logout has blocked.)

(Here are the instructions for setting up the initial database: HowToSetupDart )

There are also a set of machines that perform the nightly builds.

  • Each nightly build uses the anonymous svn web service to checkout a copy of the source code.
    • The web service is moving from something PnkFelix hosts to something that CCIS Systems hosts.
    • If you are adding a new machine to the cast, you need to check whether the machine can checkout a copy of the source normally
    • Right now if the machine has not accepted the CCIS certificate then the svn co will prompt the user for input, causing the script to block.
  • The cast (and directory where you can find the nightly builds)
    • Artichoke: /home/henchman/larcenytest/; look at the henchman user's crontab.
    • Rasputin: C:\Henchman\larcenytest\ (aka /cygdrive/c/Henchman/larcenytest/ under Cygwin).
      • TODO: find out from Jesse what the analogous service to cron is on Windows (or at least on Rasputin).
    • Zulu: /proj/will/pnkfelix/larcenytest/; look at the pnkfelix user's crontab while logged into Zulu
      • (each CCIS machine gets a separate crontab, which we could use to set up parallel nightly builds on distinct machines...).
      • FYI: crontab -l lists the current user's crontab, and crontab -e edits a copy of the current user's crontab file and installs the copy as their crontab when editing is complete. (Also the only way to remove all lines from a crontab is crontab -r, according to the crontab man page.)
    • Poblano: /home/henchman/larcenytest/; look at the henchman user's crontab.
    • Hercules: /home/pnkfelix/larcenytest/; look at the pnkfelix user's crontab. (but this is Felix's private machine, not CCIS owned)
  • Each autobuild machine has a copy of a script that drives the autobuild process each night.
    • The script: [source:trunk/larceny_src/test/Scripts/checkout-svn-dart checkout-svn-dart]
    • Actually, the usual way that it works is that each autobuild host has several symbolic links to that same script, but with specially chosen names for the link's name.
      • (Yes, this is a strange way to do things. But it does make the purpose of each link self-evident, once they are set up accordingly.)
    • The parameters for the build (whether it should use Larceny or MzScheme as the host, whether it is a Native or Petit build, etc) are encoded in the link.
    • Then, each autobuild host has a single script (which Felix usually names checkout-svn-mail) that is run every night, which:
      1. Runs each of the linked scripts, submitting the resulting dart log file to the Dart server
      2. Emails Felix with a very brief message saying that the nightly build occurred
      • Felix is a bit hestitant to put checkout-svn-mail under source control because it sends email to him every night, and because it refers to the above machine (uighur.ccs.neu.edu), and he does not want to encourage other people to submit random stuff to these addresses. This reasoning, if you can call it that, is a little bit irrational (but so is referring to yourself in the third person.)
Clone this wiki locally