Appendix A Mirroring

Table of Contents
A.1 Introduction
A.2 Mirroring The Tools
A.3 Mirroring By Release Copy
A.4 Mirroring By Building Releases
A.5 Removing Mirrored Releases

A.1 Introduction

As a normal course of development the release tools assume that the base releases and the tools are accessed by all developers from one central location. This location is typically on a networked file system such as AFS that allows global distribution. There are however occasions where some developers may be unable to use the central repositories for the development. For example, laptop users are only occasionally connected to the network, but often want to continue development even when they are disconnected. Another example are those developers who have so bad network connections to the central repository that they cannot use it for profitable work.

SRT allows a developer or a site to mirror the release tools themselves and the base releases in part or in full. Both of these happen manually by the commands run by the developer or the software manager for a site. Usually the tools themselves would be mirrored whenever a new version of them have been installed in the master repository. Official releases can be mirrored after the librarian has frozen them. Transitive mirrors are not allowed; everybody must always mirror from the central repository. Most software librarian's tools will also refuse to operate on a mirror.

Official releases can be mirrored in two ways: by copying the files from $SRT_DIST to the mirror area, or by building the release from source. The former would be used when the network connection is reasonably fast and it is otherwise possible to use the binaries[1] Otherwise one would check the releases out from the version control system and build them exactly as the software librarian did. Needless to say, the former is the preferred way of mirroring and should be used whenever possible.

IMPORTANT

If you are mirroring base releases because you have a slow network link, you should not expect to be able to mirror every base release. In a large software project the size of a release may be a gigabyte or more per architecture and they may be created on a weekly basis. If your link is so slow that you cannot access the central software repository effectively, it is hardly going to be fast enough to let you transfer such massive amounts of data so frequently.

One solution to this issue is to not mirror so often, for example just once a month, or to mirror only partial releases for a limited set of architectures. This latter choice is possible if the developers on that site will not develop all of the software, but only parts of it. Yet another alternative is to use physical transfer and not networks: burn the releases on CDs and ship them to regional centres once a week. Other remote sites would then use the software at the regional centres, not from the central repository.

IMPORTANT

You are not allowed to mirror the version control system under any circumstances. This is not useful because of the remote access capabilities built into CVS: as far as CVS is concerned, you do not need to be connected to develop the sources, only when you perform CVS operations. These usually occur rarely enough that you can simply do them when you are connected again. If your site has a bad network connection, the CVS operations will just be slow but guaranteed to work successfully--the remote CVS can function over amazingly miserable networks.

Notes

[1]

For example, the system shared libraries are installed in the same places. This is not always the case across all the different sites. Another example is architectures the librarian cannot build. In that case, the remote sites cannot of course copy a release for their architecture, but must build it locally.

[1]

In fact, not only can the directory not exist, but also parts of the path leading to it. The tool will try to create all the directories missing on the path. It is of course assumed that you have the permission to create those directories.

[2]

It is not possible to specify any other directory layout unlike with the install tool.

[3]

Actually, the srt directory will contain a subdirectory for each version of the release tools, such as 0.3.0. It is that directory that contains a particular version of the tools.

[1]

If the official releases are made very regularly in your project you may of course be able to construct automatically scheduled mirroring jobs. That does not change the fact that it still you, not the release tools, that initiates the operations.

[1]

The release tools always enable dynamic shared library path modifications, so this should not be an issue. The problem may however arise for software that is beyond your or your project's control.

[2]

These commands assume a Bourne-compatible shell. See Chapter 14, ``Working Disconnected'' for examples of how the commands would look like under a C-shell derivative,