There are currently (11 Dec. 2001) six build machines:
| Hostname | Repository |
|---|---|
| miracleman | sparc-sun-solaris2.6 |
| pumpkinhead | sparc-sun-solaris2.7 |
| omahacatdancer | sparc-sun-solaris2.8 |
| johndee | sparc64-sun-solaris2.7 |
| mistere | sparc64-sun-solaris2.8 |
| rosewalker | sparc64-sun-solaris2.8_sun-perl,gnome |
On your workstation, generate a keypair with ssh-keygen(1) (run ssh-keygen -t dsa or ssh-keygen -t rsa). Add the contents of your public key (~/.ssh/id_dsa.pub or ~/.ssh/id_rsa.pub) to ~/.ssh/authorized_keys2 on each build machine.
On your workstation, install the remote-rpm RPM. Alternatively, check out remote-rpm from smeagol.rutgers.edu. Install buildmachinetab in your home directory and put remote_rpm somewhere on your path. Edit remote_rpm accordingly (you only need to change the $remote_rpm and $default_tab variables). Either way, you should change the $default_key variable to match the filename of the private key you created earlier.
Edit buildmachinetab (this file is explained in detail in build-repository/instructions.html on smeagol.rutgers.edu). The only important field on each line is USER: change sbi to your username on each respective build machine.
Test remote_rpm: try running remote_rpm -- -q emacs. After each machine finishes, you should get a log file named LOG with the output of rpm -q emacs on each build machine.
The interface of remote_rpm is designed to mimic the interface of rpm:
Usage: remote_rpm [-n] [-h] [-k key] [-t tab] [-m machines] [-o log file]
[-x excluded specfiles] -- <rpm arguments>
-h: Print this usage message
-k: Specify by colon-delimited list the ssh keys to use (the default
list is /stooges/u1/sbi/.ssh/id_rsa)
-m: Specify by colon-delimited list the build architectures to use (the
default consists of all architectures listed in the tab file)
-n: Print the commands to conduct a remote build, but do not execute them
-o: Specify the output file (the default is LOG)
-r: Specify the rpm build directory (the default is
/usr/local/src/rpm-packages)
-t: Specify the build machine tab to use (the default is
/stooges/u1/sbi/buildmachinetab)
-x: Specify by colon-delimited list the spec files not to copy (the default
list is machine-header.spec)
After the '--', write the arguments to rpm that you wish to execute
on each machine.
You can use remote_rpm to query the remote RPM databases
(e.g. remote_rpm -- -q emacs: is emacs installed
on the build farm?) install RPMs on the build machines
(e.g. remote_rpm -- -i foobar.rpm: copy foobar.rpm
to each machine and install it); or, most importantly, build RPMs on
the build machines.
To build an RPM, copy your specfile and any specfiles it includes into a working directory. Make sure the sources and patches it references are in /usr/local/src/rpm-packages/SOURCES. Run remote_rpm -- -ba your-spec-here. You should get a list such as this:
sparc-sun-solaris2.6: 11689, /var/tmp/aaaTjai1w sparc-sun-solaris2.7: 11692, /var/tmp/aaaulaG1w sparc-sun-solaris2.8: 11695, /var/tmp/aaaxna41w sparc64-sun-solaris2.7: 11698, /var/tmp/aaaCsaq2w sparc64-sun-solaris2.8/sun-perl,gnome: 11702, /var/tmp/aaaswaW2w sparc64-sun-solaris2.8: 11706, /var/tmp/aaa6zaq3wremote_rpm will copy all of your specfiles, sources, and patches onto the build machines. It will then run rpm -ba your-spec-here (with additional flags if necessary). As the compile proceeds, you may tail any of these files to see the output from the build machines. After the compile is done (or remote_rpm is interrupted), these files will be concatenated together in a file named LOG. remote_rpm will copy the RPMs back into the current directory, as well as the source rpm from the first machine that finishes compiling.
If want to build RPMs on a subset of the build machines, use the `-m' switch, e.g. remote_rpm -m "sparc-sun-solaris2.8:sparc64-sun-solaris2.8" -- -ba tcp_wrappers_ipv6.spec. By default, remote_rpm will use all the build machines.
If you want to exclude spec files from being copied to the build machines, use `-x'. This can be useful with headers such as machine-header.spec, which record information specific to the configuration of the build machine (e.g. which_gnome and which_perl variables). It is unnecessary to include headers such as perl-header.spec, which should remain consistent regardless of machine configuration.
If you only want to build binary packages, use the `-bb' switch, e.g. remote_rpm -- -bb your-spec-here.