CVSup is a software package for distributing and updating source trees from a master cvs(1) repository on a remote server host. The OpenBSD sources are maintained in a CVS repository on a central development machine in Canada. With CVSup, OpenBSD users can easily keep their own source trees up to date.
CVSup uses the so-called pull model of updating. Under the pull model, each client asks the server for updates, if and when they are wanted. The server waits passively for update requests from its clients. Thus all updates are instigated by the client. The server never sends unsolicited updates. Users must either run the CVSup client manually to get an update, or they must set up a cron(8) job to run it automatically on a regular basis.
The term CVSup, capitalized just so, refers to the entire software package. Its main components are the client cvsup (or its alternative implementation csup) which runs on each user's machine, and the server cvsupd which runs at each of the OpenBSD CVSup mirror sites.
CVSup is intended to be both faster and more flexible than sup(1), CVSup's predecessor.
The OpenBSD Project currently has six main source repositories:
CVS is the source code control system used to manage the OpenBSD source tree. It is described in more detail here. Note that CVS and CVSup are entirely different programs. Although CVS can be used for remote file access, it is not optimized for wholesale source tree distribution over the net, and CVSup can be easily an order of magnitude more efficient for this task.
Building CVSup from the sources can prove cumbersome since it is written in Modula-3. The lang/ezm3 port provides a smaller distribution of the Modula-3 compiler and runtime system for people whose only need for Modula-3 is to build CVSup. Nevertheless, if you only care about running CVSup, it is recommended that you download the cvsup package from the ftp mirror sites instead of building your own from the net/cvsup port. Currently the OpenBSD ports of Ezm3 and consequently CVSup are only available on the i386 platform.
Alternatively, the csup package is written in C and provides a drop-in compatible client.
For further information about CVSup, see the author's project homepage.
In order to mirror the OpenBSD repository with CVSup, the following configuration file might be used:
# Defaults that apply to all the collections *default release=cvs *default delete use-rel-suffix *default umask=002 *default host=mirror.osn.de *default base=/cvs *default prefix=/cvs # If your network link is a T1 or faster, comment out the following line. *default compress OpenBSD-all #OpenBSD-src #OpenBSD-www #OpenBSD-ports #OpenBSD-x11 #OpenBSD-xf4 #OpenBSD-xenocara
This directs cvsup to refresh all OpenBSD distributions from mirror.osn.de with a umask(2) that permits group write permission to the local repository.
Assuming this file is saved as cvs-supfile, the following command would be used to invoke the cvsup GUI:
cvsup cvs-supfile
whereas for batch mode, the following might be used:
cvsup -g -L 2 cvs-supfile
Now that you have a local copy of the CVS repository, it is now simple to check out, update, or do any of the other CVS operations you would normally do against a remote repository, locally. For example:
cvs -d/cvs checkout src -P cvs -d/cvs up -Pd cvs -d/cvs diff -u file.cMore details on CVS operation can be found in FAQ5, Fetching appropriate source code and in the cvs(1) man page.
As an alternative to getting the repository and using CVS, you can run CVSup in checkout mode by adding a tag or date keyword to your supfile, either as a *default or as an option to a collection. In particular, you can use this to efficiently update the source and ports trees shipped on the CDROMs.
The following supfile could be used to update your ports tree:
# Defaults that apply to all the collections *default host=mirror.osn.de *default base=/var *default prefix=/usr *default release=cvs *default delete use-rel-suffix compress # Ports Collection. OpenBSD-ports tag=.
Any CVS symbolic tag can be used. A single period "." means HEAD, i.e. the newest revision of all files in the main branch. Take care to specify an existing tag, as CVSup cannot distinguish valid from invalid tags, and an attempt to synchronize an existing source tree to an invalid tag will remove all files.
Alternatively, use the keyword date=[cc.]yy.mm.dd.hh.mm.ss to select a revision by date. All 17 or 20 characters must be given as shown. For the years 2000 and beyond, specify the century cc. For earlier years, specify only the last two digits yy. You may also combine the tag and date keywords.
The following CVSup servers are available:
located in Oslo, Norway;
maintained by Anders Nordby.
Updated every 3 hours.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository | |
OpenBSD-www | - The www repository | |
OpenBSD-x11 | - The XFree86-3 repository | |
OpenBSD-xf4 | - The XFree86-4 repository | |
OpenBSD-xenocara | - The Xenocara repository | |
OpenBSD-all | - All OpenBSD repositories |
located in St. Petersburg State University, St. Petersburg, Russia;
maintained by Dima Veselov.
Updated every 4 hours.
Available collections:
OpenBSD-ports | - The ports repository |
located at Otemachi, Tokyo, Japan;
maintained by CVSup Administrator.
Updated every 3 hours.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository | |
OpenBSD-www | - The www repository | |
OpenBSD-x11 | - The XFree86-3 repository | |
OpenBSD-xf4 | - The XFree86-4 repository | |
OpenBSD-xenocara | - The Xenocara repository | |
OpenBSD-all | - All OpenBSD repositories |
located at National Chiao-Tung University, Taiwan;
maintained by Yi-Jheng Lin.
Updated every 2 hours.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository | |
OpenBSD-www | - The www repository | |
OpenBSD-x11 | - The XFree86-3 repository | |
OpenBSD-xf4 | - The XFree86-4 repository | |
OpenBSD-all | - All OpenBSD repositories |
located in Germany
maintained by Armin Wolfermann.
Updated every 4 hours.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository | |
OpenBSD-www | - The www repository | |
OpenBSD-x11 | - The XFree86-3 repository | |
OpenBSD-xf4 | - The XFree86-4 repository | |
OpenBSD-xenocara | - The Xenocara repository | |
OpenBSD-all | - All OpenBSD repositories |
located at London, UK;
maintained by Tom Beard.
Updated every 2 hours from cvsup2.de.openbsd.org.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository |
located in Stockholm, Sweden;
maintained by Kent Riboe.
Updated every 3 hours from cvsync.de.openbsd.org.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository | |
OpenBSD-www | - The www repository | |
OpenBSD-all | - All OpenBSD repositories |
located in Tallinn, Estonia;
maintained by Rivo Nurges.
Updated every 2 hours from cvsync.de.openbsd.org.
Available collections:
OpenBSD-src | - The src repository | |
OpenBSD-ports | - The ports repository | |
OpenBSD-www | - The www repository | |
OpenBSD-x11 | - The XFree86-3 repository | |
OpenBSD-xf4 | - The XFree86-4 repository | |
OpenBSD-xenocara | - The Xenocara repository | |
OpenBSD-all | - All OpenBSD repositories |
Note: If your server is listed on here with inaccurate or unknown information, please contact www@openbsd.org.
You may want to use traceroute(8) to find out which server is nearest you. Problems with a server should be reported to the maintainer of the server in question.
As of January, 2008, the CVS repository sizes are
OpenBSD-ports | - 310MB | |
OpenBSD-src | - 1500MB | |
OpenBSD-www | - 350MB | |
OpenBSD-xenocara | - 600MB | |
OpenBSD-x11 | - 200MB | |
OpenBSD-xf4 | - 564MB |
There is an additional overhead of 408MB for the CVSROOT directory. The overall repository size currently increases at a rate of about 400MB per annum.
IMPORTANT NOTE: There are a few issues relating to cryptographic software that everyone should be aware of:
The OpenBSD sources are from Canada. As researched by a Canadian individual and as described in the Export Control list of Canada, it is legal to export crypto software from Canada to the world.
However, if you are outside the USA or Canada, you should not fetch the cryptographic sections of the OpenBSD sources from a CVSup server located in the USA. The files in question are...
Because of the USA ITAR munitions list, crypto software may only be exported to Canada from the USA.
The OpenBSD project is looking for more CVSup servers -- if you are interested, please contact www@openbsd.org for configuration details.