# Machine Setup

You need Sun JDK 6, Apache Ant 1.8.2 or later, and git. You'll probably want an IDE such as Eclipse and, in order for Virgo projects to build under Eclipse, the Virgo IDE tooling and AJDT (the current update site may be found on http://www.eclipse.org/ajdt/downloads/).

<span style="color:#ff0000">Don't forget to install AJDT as this is needed so that Eclipse produces the same compiled classes as the Ant build!</span>

At the time of writing, some ant targets occasionally fail because they cannot load classes from jsch-0.1.42.jar. A workaround on Mac OS X is to copy this JAR from virgo-build's /lib/ivy directory to /opt/local/share/java/apache-ant/lib.

On Mac OS X, increase the default number of concurrently open files by adding this to .profile:

           ulimit -n 10000

To run certain scripts (don't run them unless you know what you're doing—and why), you'll need ruby, gems, and the 'choice' gem. On Mac OS you can get these by installing the XCode tools (from the Mac OS X disk) and MacPorts, then issuing:

           sudo port -v install ruby
           sudo port -v install rb-rubygems
           sudo gem install --remote choice

To run scripts such as Releaselor or Ripplor you'll need to:

1. Generate SSH key by calling ssh-keygen without a passphrase
2. Upload your public SSH key to build.eclipse.org
   - login with user <code>virgoBuild</code>
   - follow the steps described here
3. Log in (adding the host key) at lease once to:
   - build.eclipse.org
   - download1.eclipse.org
4. Add your private key to ANT_OPTS:

           -Dkey.file=$HOME/.ssh/id_dsa

If you have headless environment you may want to add to ANT_OPTS:

           -Djava.awt.headless=true

To enable Clover you will need to specify in ANT_OPTS the path to the licence:

           -Dclover.license.path=/opt/clover.license

## Notes for Ubuntu 10.04

### JDK

I have found that the <code>sun-java6-jdk</code> package is not installable directly from a fresh install of this level of Ubuntu (I'm running this in a virtual machine). (I set <code>JAVA_HOME</code> to be <code>/usr/lib/jvm/java-6-sun</code> which is a symbolic link, and this doesn't need updating after the install below.)

To get the jdk to be installed I issued the following commands (which you might find useful):

       sudo add-apt-repository "deb http:''//''archive.canonical.com''/'' lucid partner"

(which made the package visible to the package-manager)

       sudo apt-get update

(to reset the package-manager indexes)

       sudo apt-get install --fix-missing sun-java6-jdk

The <code>--fix-missing</code> option is necessary since other packages are required.

### jsch library

The JCraft's jsch library needed for SSH/SCP support in ANT may need to be installed, e.g.:

       sudo apt-get install libjsch-java

Check in ANT if its available:

       ant -diagnostics

If the output says under "Tasks availability" <code>sshexec : Missing dependency com.jcraft.jsch.Logger</code>, then you'll need to provide this library to ANT. On Linux you can do this by creating a symlink:

       sudo ln -s /usr/share/java/jsch-0.1.42.jar /usr/share/ant/lib/jsch-0.1.42.jar

or on Mac OS, place (a link to) the JAR in ~/.ant/lib:

       cp jsch-0.1.42.jar ~/.ant/lib/.

Finally, you may check if the JAR is correct (as suggested in this blog):

       jar tvf /usr/share/ant/lib/jsch*jar

or:

       jar tvf ~/.ant/lib/jsch*jar

If everything is ok you should get a list of files inside the archive. Be sure to check "ant -diagnostics" too.