Gump Installation on Clarus.apache.org

Clarus is a dual CPU Xserve G4 made available by Apple. It runs the latest update of Mac OS X Server 10.4 and has JVM 1.4.2 and 1.5 installed (1.4.2 is the default). The machine has two RAID1 mirrors, 56Gb mounted on / and 172Gb mounted on /X1. Users have their home directory on the /X1 volume. The latest XCode (2.1 I believe) is installed to get the C compiler and accompanying goodies.

Prerequisite Installations

Everything is installed in /usr/local/package-install, in line with the preferred installation method used by the Infrastructure team.

clarus:~ sctemme$ ls -l /usr/local
total 0
drwxr-xr-x   7 root  wheel  238 Jan 25 23:05 apr-install
drwxr-xr-x   8 root  wheel  272 Feb 18 11:49 bin
drwxr-xr-x   4 root  wheel  136 Jan 25 20:51 include
drwxr-xr-x   7 root  wheel  238 Jan 25 20:51 lib
drwxr-xr-x   6 root  wheel  204 Feb 18 03:25 man
drwxr-xr-x   4 root  wheel  136 Feb 13 09:13 maven-install
drwxr-xr-x   4 root  wheel  136 Feb 12 14:18 maven2-install
drwxr-xr-x   4 root  wheel  136 Feb 18 11:34 nant-install
drwxr-xr-x   4 root  wheel  136 Jan 28 10:42 python-install
drwxr-xr-x   3 root  wheel  102 Jan 28 10:17 share
drwxr-xr-x   4 root  wheel  136 Jan 25 22:35 svn-install

Every installation directory can hold several versions side-by-side, with the currently active version symlinked to current:

clarus:~ sctemme$ ls -l /usr/local/maven-install 
total 8
lrwxr-xr-x   1 root  wheel   11 Feb 13 09:13 current -> maven-1.0.2
drwxr-xr-x   7 root  wheel  238 Dec  7  2004 maven-1.0.2

Several exceptions exist: Mono was installed using the Mac OS X installer made available by the project. It installs in the OS directories with the runtime as /usr/bin/mono. GNU Pathtools (if I recall correctly) went directly into /usr/local. NAnt is executed by the following shell script in /usr/local/bin/nant:

#! /bin/sh
exec mono /usr/local/nant-install/current/bin/NAnt.exe "$@"

Environment

The user that executes Gump (my own moniker, sctemme, for now) has the following .profile:

MAVEN_HOME=/usr/local/maven-install/current
M2_HOME=/usr/local/maven2-install/current
PATH=${MAVEN_HOME}/bin:${M2_HOME}/bin:/usr/local/python-install/current/bin:${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/svn-install/current/bin
JAVA_HOME=/Library/Java/Home
GUMP_PYTHON=/usr/local/python-install/current/bin/python
export JAVA_HOME GUMP_PYTHON MAVEN_HOME M2_HOME

Note the use of the current installation directory for the installed packages. Also, the PATH setup prefers the local Python install over the one that came with the OS. However, we have to set GUMP_PYTHON to prevent Gump from defaulting to a hardcoded python2.3 somewhere down the pike.

The ~/.profile is source by login shells (only), but since the variables are exported, they are inherited by subshells such as the ones started by screen(1).

Gump Installation

Gump is checked out into ~/asf/gump/trunk. So far, it has been started by running ./gump run from that directory. The packages are installed in ~/packages and symlinked into ~/asf/gump/trunk/work to protect against any urge to blow away the checkout and start anew.

Two installation-specific configuration files:

clarus:~/asf/gump/trunk sctemme$ cat cron/local-env-clarus.sh
GUMP_HOME=/Volumes/X1/home/sctemme/asf/gump/trunk
JAVA_HOME=/Library/Java/Home

(not sure whether this is used for the manual runs)

clarus:~/asf/gump/trunk sctemme$ cat metadata/clarus.local.xml 
<?xml version="1.0"?>

<!-- Snip Apache license, version 2.0 -->

<workspace 
    version="0.4" 
    name="minimal"
    basedir="work/workspace" 
    pkgdir="work/packages"
    jardir="work/jars"
    logdir="work/logs">

  <property name="build.sysclasspath" value="only"/>

  <profile href="profile/gump.xml"/>

  <database database="gump_test" user="gump" passwd="mYp@ssw0rd"/>  
</workspace>

Apache HTTPd Configuration

To publish the results, we're using the default Apache httpd that comes with Mac OS X Server. It has been configured through the administrator GUI, which results in a configuration snippet somewhat like the following:

## Default Virtual Host Configuration

<VirtualHost 209.237.227.206:16080>
        ServerName clarus.apache.org.
        ServerAdmin admin@example.com
        DocumentRoot "/Library/WebServer/gump"
        DirectoryIndex "index.html" "index.php"
        CustomLog '|/usr/sbin/rotatelogs "/var/log/httpd/access_log" 604800' "%{PC-Remote-Addr}i %l %u %t \"%r\" %>s %b"
        ErrorLog '|/usr/sbin/rotatelogs "/var/log/httpd/error_log" 604800'
        ErrorDocument 404 /error.html
        <IfModule mod_ssl.c>
                SSLEngine Off
                SSLLog "/var/log/httpd/ssl_engine_log"
                SSLCertificateFile "/etc/certificates/Default.crt"
                SSLCertificateKeyFile "/etc/certificates/Default.key"
                SSLCipherSuite "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXP:+eNULL"
        </IfModule>
        <IfModule mod_dav.c>
                DAVLockDB "/var/run/davlocks/.davlockany_80_default"
                DAVMinTimeout 600
        </IfModule>
        <Directory "/Library/WebServer/gump">
                Options All -Indexes -ExecCGI -Includes +MultiViews
                <IfModule mod_dav.c>
                        DAV Off
                </IfModule>
                AllowOverride None
        </Directory>
        <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteCond %{REQUEST_METHOD} ^TRACE
                RewriteRule .* - [F]
        </IfModule>
        <IfModule mod_alias.c>
        </IfModule>
        ServerAlias *
        LogLevel warn
</VirtualHost>

/Library/WebServer/gump is a symlink to ~/asf/gump/trunk/work/logs

  • No labels