ST - Internals - Applying Updates

Update Approaches

There are multiple approaches to updating the ST code base. Common to all of them is making the change to just the debug version, and then distributing the updates from capo.private to the systems using ST.

www.cs

One approach is to make desired changes (to the debug version) on www.cs. And then when they appear to work, update capo.private, using the st-sup command.

capo.private

Another approach is to make the updates to the capo.private version, and then send them to www.cs for testing via the st-copy command.

Bill's Approach

What's happened in practice (until the end of 2015), is to maintain a personal copy of just the files that are being changed, using them to make temporary updates to the www.cs debug version. Non-trivial changes are made only outside of business hours. Once they seem to work, the changes are used to update capo.private, using the st-sup command.

Before a file is updated, perl -c is used to check for syntax errors; that alone can stop a lot of breakage.

Updating Servers from the Source Machine

Updates on the source machine (capo.private.uwaterloo.ca as of 2015-11) are copied to the destination machines (at least www.cs, mx100.cs, www.math as of 2015-11) either by

In addition, updates to just a single host (typically for testing) can be done with the st-copy command. It defaults to updating www.cs.

Special Case — st-suid-perl

st-suid-perl requires rebuilding from source on each of the architecture specific distribution machines, via the xh-sdist command on capo.private. The Makefile defaults to updating the "debug" version. This will update the distribution machines:

cd /usr/source/rt-math-1/st-suid-perl
xh-sdist -m install

Afterwards, the XHier updates are required.

Special Case — st-args.cgi

Updates to /software/rt-math-1/servers/st-args.cgi aren't active until installed in the WWW server space .../ST/version/st-args.cgi. That's done by following .../ST/.ReadMe, which is executable (!). It's done this was to avoiding fighting WWW server constraints on symlinks.

This should arguably be done by the package Installation program, however it doesn't know where in the WWW server space the references to ST may be found.