| Version 1.9 Build 1556
|
|
Next: inhold
Up: Code distribution
Previous: exhale
Subsections
inhale
Retrieve AIPS++ source code updates.
inhale [-b] [-c|-m] [-D] [-d]
[-l] [-n] [-P] [-R NAME] [-r#]
[-w#] [-cvsup data|docs|all] [binary]
inhale is a part of the AIPS++ code distribution system. It allows
participating AIPS++ code development sites to maintain a slave copy of
the master RCS repository which is no more than 12 hours out-of-date
(see exhale (p)).
inhale fetches the compressed tar files needed to update a
consortium site's copy of the AIPS++ RCS repositories from the
/pub/master area on the master AIPS++ host aips2.nrao.edu.
After installing the updates, inhale invokes sneeze (p) to rebuild
the system and documentation. The rebuild may be done serially or in parallel
for any number of AIPS++architectures on various hosts.
The update files are of three types (see exhale (p)):
- A base release which contains all master RCS files at the time of the
last base release.
- Incremental updates which consist of all RCS files changed since the
preceding incremental update (usually two per day).
- A single cumulative update file which consists of all RCS files
changed since the last base release.
inhale compares version information stored in the
/pub/master/VERSION file on the master machine with that in
$AIPSLAVE/VERSION on the local machine to determine which files need
to be fetched.
If the $AIPSLAVE/VERSION file does not exist, or if the major version
number stored therein is less than that of /pub/master/VERSION,
inhale fetches the latest base release. If the -c option was
specified, inhale will fetch the cumulative update file. Otherwise, as
many of the incremental update files will be fetched as are needed to bring
the system up-to-date. If there are insufficient of these stored in
/pub/master, then inhale resorts to a cumulative update.
If an update contains the RCS version file for ax_master
then it will be applied to the slave and code areas before the update is
installed. This may happen several times for a multi-increment update.
Cumulative updates always contain ax_master which
inhale applies in cumulative mode.
If the major version number recorded in /pub/master/VERSION is greater
than that recorded in $AIPSLAVE/VERSION, or if
$AIPSLAVE/VERSION does not exist, then inhale does a ``base
installation''. In this mode it fetches only the base release file and before
installing it deletes any existing slave and code directories. After
installing it, and if not contra-indicated by the
inhale.base.slave.preserve and inhale.base.slave.preserve
resources, inhale preserves a copy of the slave and code directories in
$AIPSROOT/base-MM/..., where MM is the major version number of
the new base release. inhale then invokes sneeze (p) in base mode.
After doing a base installation, inhale reinvokes itself if necessary to
bring the minor version number up-to-date.
inhale maintains the LOGFILE files in $AIPSLAVE and
$AIPSCODE. These record the version, time of completion, and mode of
the last slave and code updates (see avers (p)).
- -b
- Use the most recently ``blessed'' release (see notes). Useful for
sites that wish to track development but that also require stable
releases.
- -c
- Force a cumulative update. This should be done regularly (usually once a
week) to guarantee that the slave copy does not deviate from the master.
- -cvsup data|docs|all
- Update the data, docs or both using cvsup. Cvsup must be in the PATH for
this option to work. If a supfile exists it will be used otherwise the
supfile will be created.
- -D
- Fetch the latest update which has passed the testsuite (p).
- -d
- This option is operative only if the -n option is also specified, it
causes docsys to be omitted from the list of targets (see
makefiles (p). Note that even if documentation compilation is
defeated via the DOCSYS variable in makedefs (p) (see
makedefs (p)) this option may still be useful in preventing
docsys from being recorded in the LOGFILE entry for the
rebuild.
- -l
- Latchkey mode; fetch latchkey updates (if any) together with updates
intended for general distribution (see exhale (p)).
- -m
- Perform a ``mixed'' update: retrieve the incremental update files,
then invoke sneeze (p) in cumulative mode. This is useful for
minimizing file transfer times when performing cumulative style
updates over slow network links.
- -n
- Don't remake the system (allsys) after installing the update. It
does however remake the install target, and also docsys
provided that the -d option is not also specified.
- -P
- Use passive mode when doing FTP. Useful for firewalls etc. The
FTP client being used must support passive mode.
- -R NAME
- instead of downloading the default distribution, get the one called "NAME".
- -r count
- Set the retry count for the ftp transfer, default is 12. Set this to zero
to circumvent the ftp, inhale will then assume that all
necessary files have been fetched from /pub/master into directory
$AIPSLAVE/tmp, including /pub/master/VERSION.
- -w interval
- Set the retry interval for the ftp transfer in seconds, default is 900.
- binary
- This option will download the latest stable linux binary executables,
libraries and scripts. /aips++/stable must exist (typically as a symbolic
link) for the binaries to work.
inhale always ignores $HOME/.aipsrc (see getrc (p)).
General resources.
- account.manager: Account name (and group) of the owner of the
AIPS++ source code. inhale only allows itself to be run from this
account.
- account.programmer: (Account name and) name of the AIPS++
programmer group.
The following resources used by inhale should be defined in
$AIPSROOT/.aipsrc.
- inhale.base.slave.preserve: If not false (see affirm (p)) then
preserve the slave repository when a new base release is installed.
- inhale.base.code.preserve: If not false then preserve the code areas
when a new base release is installed.
- inhale.sneeze.hosts: List of hosts on which to invoke
sneeze (p) to rebuild AIPS++ for architectures which differ from
that of the host on which inhale is executing. An architecture
extension (see (aipsinit (p)) may be specified by appending it to the
hostname with an intervening colon, i.e. <hostname>:<aips_ext>.
The aips_ext is explicitly permitted to be null or set to
"_" to signal the host's default architecture. The inhale
host's name will be ignored if included in the list (unless an extension is
specified).
- inhale.sneeze.$HOST.rcmd: The command inhale should use
to invoke sneeze (p) on remote systems. Defaults to
rsh. ssh, the ``secure shell,'' is one possible
alternative.
- sneeze.sleep: Use this option to adjust the delay time (in seconds)
for asyncronous builds. The default is 600s which should be adequate to
avoid the glish concurrency configure problem.
- inhale fetches a CHKSUM file which it uses to verify the
integrity of the files it has received. The checksums are computed with
the BSD version of sum which algorithm differs from that of SysV.
inhale may complain about ``files not received in good order'' if
aips2mgr uses the SysV version of sum, leading to repeated
attempts to fetch the update files. See §2.3
for advice on sidestepping this problem.
- inhale fetches the file /pub/master/BLESSED which it
uses, when invoked with the -b option, in conjunction with the
VERSION files to determine which files need to be fetched.
inhale will abort if it is invoked with the -b option and
it cannot parse the BLESSED file to determine the most
recently-blessed version for the local system's architecture.
inhale will default to normal behavior if the BLESSED
file is not present. Versions are listed, individually by
architecture, in BLESSED when they have either passed the
testsuite (p) or have met whatever other criteria is deemed
suitable.
- If ``blessed'' mode is used on an inhale host that invokes
sneeze (p) on multiple client machines of different
architectures then those clients will be updated to the most
recently-blessed version for the inhale host's architecture,
not their own.
- The incremental (and cumulative) update files contain the VERSION
file for the preceeding version. This is used in multi-increment
updates.
- inhale checks the directory ownerships and permissions on all
AIPS++ slave and code areas, reports incorrect ownerships, and
silently fixes the group ownerships and permissions where possible.
- Since inhale may invoke sneeze (p) to rebuild the AIPS++
system which includes the inhale executable it must take precautions
to avoid overwriting itself. It does so by copying itself to inhale-
and then exec'ing this.
- inhale is a critical part of the AIPS++ code distribution system.
If a broken version was distributed to consortium sites, then it probably
would not be able to fetch and install a repaired version subsequently
distributed. The code distribution system would be broken.
Status return values correspond to the various phases of the operation
0
: success
1
: initialization error
2
: initial ftp error
3
: main ftp error
4
: error extracting or installing the new RCS files
5
: error checking out the new code
6
: error rebuilding the system
The following aips2mgr cron job entry runs inhale at
2300 each night performing a cumulative update on Saturday evening, and
incremental updates on all other evenings:
# Update the AIPS++ slave directories, incremental Sun-Fri, cumulative Sat.
00 23 * * 0-5 (. $HOME/.profile ; inhale) 2>&1 | \
mail -s "Epping inhale" aips2-inhale@nrao.edu
00 23 * * 6 (. $HOME/.profile ; inhale -c) 2>&1 | \
mail -s "Epping inhale -c" aips2-inhale@nrao.edu
(Note that all cron entries must be one-liners but they are broken
here for clarity.) The inhale log is emailed to the aips2-inhale
exploder which allows the code distribution system to be monitored. An
alternative method is to forward all of aips2mgr's mail via the
$AIPSROOT/.forward file, or as a mail alias.
The unix manual page for tar(1).
The unix manual page for cron(1).
The unix manual page for rsh(1).
The unix manual page for ssh(1).
AIPS++ variable names (§1.2).
Section §1.4, AIPS++ accounts and groups.
affirm (p), get the Boolean value of a set of arguments.
avers (p), AIPS++ version report utility.
ax (p), AIPS++ code deletion utility.
exhale (p), AIPS++ code export utility.
getrc (p), query AIPS++ resource database.
makefiles (p), GNU makefiles used to rebuild AIPS++.
sneeze (p), AIPS++ system rebuild utility.
testsuite (p), maintain the most recent good cumulative update.
Original: 1992/04/08 by Mark Calabretta, ATNF.
Next: inhold
Up: Code distribution
Previous: exhale
  Contents
  Index
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc.,
Washington, D.C.
Return to AIPS++ Home Page
2006-10-15