Tinderbox/Tbox3 Setup
Contents
Setting up Tinderbox3
Much of these instructions come from Andy Howell's notes on installing Tbox3, which can also be found here.
Server Setup
Perl on the server machine
You need the LWP module. You can tell if you have it by running this:
perl -e 'use LWP::UserAgent; print $LWP::UserAgent::VERSION, "\n"'
If you get a version, you have it. If not,
perl -MCPAN -e 'install "Bundle::LWP"
Andy was also using SSL, so he needed:
perl -MCPAN -e 'install "Crypt::SSLeay"'
NOTE: on Debian 3.1, I was unable to install the Perl module Crypt::SSLeay. It asked for the location of the openssl headers, and they were not installed by default, nor by "apt-get install openssl", nor was there a package openssl-devel available. (I didn't look much farther since this was optional.)
Database Setup
Tinderbox3 appears to support either mysql or postgress. Successful installations (at least for the DB) include mysql-3.23.52-44 on SuSE linux 8.1, and mysql 4.0.15 on Redhat 9.
MySQL
First, install mysql. I'm running Debian, so I use apt-get:
yourmachine:~# apt-get install mysql-server mysql-client mysql-common
(Note that the current version is 4.0.24, as of this writing, on 2006-05-21 Sunday.)
Set a password for the MySQL root user (replace "pass" with the password you choose).
yourmachine:~# mysqladmin -u root password 'pass'
Now you need a tinderbox user, for example tbox3 which the code uses.
yourmachine:~# adduser Enter a username to add: tbox3 Adding user `tbox3'... Adding new group `tbox3' (1001). Adding new user `tbox3' (1001) with group `tbox3'. Creating home directory `/home/tbox3'. Copying files from `/etc/skel' Enter new UNIX password: pass Retype new UNIX password: pass passwd: password updated successfully Changing the user information for tbox3 Enter the new value, or press ENTER for the default: Full Name []: Tinderbox3 Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [y/N] y yourmachine:~#
For the below, "pass" is assumed to be the password you assigned to the tbox3 user.
yourmachine:~# mysql -p Enter password: pass mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE, DROP,REFERENCES ON tbox3.* TO tbox3@localhost IDENTIFIED BY 'pass'; mysql> FLUSH PRIVILEGES; mysql> create database tbox3; mysql> quit Bye yourmachine:~#
Next, download and expand the tinderbox3 sources:
yourmachine:~# wget http://www.johnkeiser.com/mozilla/tbox3.tgz yourmachine:~# tar xzvf tbox3.tgz
Now create the tables:
yourmachine:~# cd tbox3/sql yourmachine:~# ./setup-mysql.pl tbox3 --username tbox3 --password pass
This gives errors saying it can't drop tables. That's okay; if you run it again, it won't complain (although it is not necessary to run it again: the first time, the tables did not exist, so it could not drop them, and then it created them; the script ignores errors when dropping sequences and tables for exactly this reason).
Note that there appears to be an error in the setup-mysql.pl script: the short form for both "port" and "password" is specified as "p". The above text previously had "-p pass", which did not work until I used the long version. Something else is wrong with the script, and I'm working on debugging that now; will update this section when finished.
Okay, it appears that mysql (the client) does not want the password on the command line. So you need to edit setup-mysql.pl, and change the following line (towards the end of the subroutine execute_sql_file); change the first line below to be the second line below:
push @exec_params, ("-p", $args{password}) if $args{password}; push @exec_params, ("-p") if $args{password};
Now, instead of giving you several failed drop messages, then the mysql client help, it will instead give you several failed drop messages, then ask for your password. This is the password to the tbox3 user you created above. After entering the password, there should be no more messages.
(For the belt-and-suspenders crowd, go ahead and re-run the script. This time, you'll see it drop 12 tables (which it names), then ask for your password, and then you get the bash prompt back almost immediately.)
Code Changes
You didn't think you'd get away without modifying some files, did you?
- scripts/Tinderbox3/DB.pm
Edit the dbname, username and password (near the beginning of the file).
- scripts/Tinderbox3/Login.pm
Edit "superuser" (at the end of the file; set to "tbox3@localhost"), and change the URL from "http://bugzilla.mozilla.org/query.cgi?" to your server (on line 18; set to "http://localhost/tinderbox/query.cgi?").
- scripts/Tinderbox3/InitialValues.pm
Change these if you want. They provide the defaults used when you create an new tree. Once created, the tree's data is in the database.
Web Server
Setup web server to find tinderbox3/scripts and treat .pl files as cgi scripts.
Running Apache 2.x., the following was added to /etc/apache/httpd.conf, in the "<IfModule mod_alias.c>" section:
Alias /tinderbox /path/to/code/tinderbox3/scripts <DirectoryMatch "/path/to/code/tinderbox3/scripts"> Options +ExecCGI +FollowSymLinks AddHandler cgi-script .pl AllowOverride All </DirectoryMatch>
Client Setup
Code Changes
It is recommended that you use the new and improved tinderclient that was posted to the mozilla-webtools list; it is much more general and is designed to be customized for your site. (Somebody who has a reference to this, please add it here! I could not find it.)
However, if you don't, here's a quick little patch to add authentication and to fix a missing "use Date::Format":
*** tinderclient.pl.~1.16.~ 2003-03-19 14:56:37.000000000 -0600 --- tinderclient.pl 2004-03-25 10:41:37.000000000 -0600 *************** *** 256,261 **** --- 256,262 ---- my $req = new HTTP::Request(POST => $this->{CONFIG}{url} . "/xml/" . $script ); #my $req = new HTTP::Request(POST => "http://www.mozilla.gr.jp:4321/"); $req->content_type("multipart/form-data; boundary=$boundary"); + $req->authorization_basic('andy', 'yourpassword'); ${$req->content_ref} .= $this->form_data_request($boundary, 'tree', $this->{ TREE}); foreach my $param (keys %{$params}) { *************** *** 1197,1202 **** --- 1198,1204 ---- package TinderClient::Modules::distribute; use strict; + use Date::Format; sub get_config { my ($client, $config, $persistent_vars, $build_vars, $content_ref) = @_;
Setting up a tree
Point your browser at tinderbox/login.pl, logging in as tbox (or a superuser)
Setting up Tests
There is a seperate page for setting up tinderbox3 tests