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