Announcing CVSup 16.1 --------------------- Release 16.1 of CVSup, the CVS-aware network file distribution system, is now available. What Has Changed Since the Previous Release? -------------------------------------------- Fixed a couple of long-standing bugs in the rsync code which caused it to miss many compression opportunities. This mode is actually useful now. Fixed a server bug that caused the inactivity timeout to fail in certain situations. If the network connection to a client vanished just after start-up, the inactivity timer wasn't able to kill the server process. It would then have to be killed manually. Now the inactivity timeout should work reliably. Fixed a bug that affected some versions of Solaris, e.g., Solaris 2.5.1. The server would loop after serving the first client. Fixed a bug that would kill the client or server after 2 GB of data (before compression) had gone through the network. Fixed bug: if the server tried to follow a circular symbolic link, it was a fatal error. Added new "norsync" and "rnorsync" commands for the server's list files, to allow better control over when the rsync algorithm is used. The use of "norsync" in the releases file is now deprecated; it should be specified in the list file instead. Added a command-line option "-A ipaddr" for both client and server. It causes the sockets to be bound to a specific IP address on the local host. The option is useful for controlling which network interface is used. Added Dom Mitchell's handy "cvsup2html" script to the contrib directory. It converts cvsup's log output into a web page for conveniently browsing log messages and diffs. Each filename becomes a link to the corresponding cvsweb page. Changed the GUI so that pressing the enter key in the "Filter" type-in has the same effect as clicking the start button. Refuse files are explained in better detail in the cvsup(1) manual page, thanks to some changes submitted by Mark Ovens. Where to Get CVSup ------------------ CVSup is free software. It is available from: ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/ and from all of the many FreeBSD FTP mirrors. You can find a complete list of them in the FreeBSD Handbook at: http://www.freebsd.org/handbook/mirrors.html CVSup is also available from the author's FTP server: ftp://ftp.polstra.com/pub/FreeBSD/CVSup/ Please avoid this server if possible. It has a wimpy link to the Internet. On the FTP sites, the source distribution can be found in "sources/cvsup-16.1.tar.gz". Its MD5 file signature is: MD5 (cvsup-16.1.tar.gz) = dc967a0e395722282485a9bec4dec190 If you wish to build CVSup from the sources, be sure to read the discussion further on in this announcement. Binaries for various platforms are also available in the "binaries" subdirectory. An updated port will appear soon in the "net" category of the FreeBSD ports and packages collection: http://www.freebsd.org/ports/ If you want SOCKS support, you must also install the "modula-3-socks" port or package. You'll find it in the "lang" category of the FreeBSD ports and packages collection at the URL above. SOCKS is supported only under FreeBSD, and only with dynamically linked executables. The static binary distributions do not support SOCKS. Compatibility with Previous Releases ------------------------------------ This version is believed to interoperate properly with all earlier public releases of CVSup. What Is CVSup? -------------- CVSup is a software package for distributing and updating collections of files across a network. It can efficiently and accurately mirror all types of Unix files, including sources, binaries, hard links, symbolic links, and even device nodes. CVSup's streaming communication protocol and multithreaded architecture make it most likely the fastest mirroring tool in existence today. In addition to being a great general-purpose mirroring tool, CVSup includes special features and optimizations specifically tailored to CVS repositories. By taking advantage of the special properties of the files contained in CVS repositories, CVSup is able to perform updates much faster than traditional systems. CVSup parses and understands the RCS files making up a CVS repository. When updates occur, CVSup extracts new deltas directly from the RCS files on the server and edits them into the client's RCS files. Likewise, CVSup notes the addition of new symbolic tags to the files on the server and sends only the new tags to the client. CVSup is able to merge new deltas and tags from the server with deltas and tags added locally on the client machine. This makes it possible for the client to check local modifications into his repository without their being obliterated by subsequent updates from the server. In addition to distributing the RCS files themselves, CVSup is able to distribute specific checked-out versions. The client can specify a symbolic tag, a date, or both and CVSup will extract the appropriate versions from the server's CVS repository. Checked-out versions do not need to be stored on the server, since CVSup can extract any version directly from the CVS repository. If the client has an existing checked-out tree, CVSup will apply the appropriate edits to update the tree or transform it into the requested version. Only the differences between the existing version and the desired version are sent across the network. To update non-RCS files, CVSup uses the highly efficient rsync algorithm, developed by Andrew Tridgell and Paul Mackerras. CVSup uses lightweight processes (threads) to implement a streaming protocol across the network. This completely eliminates the delays associated with the lock-step, request-reply form of communication used by many existing protocols, such as sup and NNTP. Information is transferred at the full available speed of the network in both directions at once. Network latency and server response delays are rendered practically irrelevant. CVSup uses the "zlib" compression package to optionally compress all communications. This provides an additional 65-75% compression, on top of the diff-based compression already built into CVSup. For efficiency, all processing is built into the CVSup package itself. Neither the client nor the server execute any other programs. For further information about how CVSup works, see the (somewhat out of date) "Blurb" document in the CVSup distribution. Using CVSup to Maintain FreeBSD Sources --------------------------------------- CVSup servers for the FreeBSD sources are currently running at about 50 mirror sites around the world. For an up-to-date list of them, see: http://www.freebsd.org/handbook/mirrors-cvsup.html Using CVSup, you can easily receive or update any of the standard FreeBSD source releases, namely, "cvs", "current", and "stable". The manual page for cvsup(1) describes how to do that. For more detailed instructions, see the section on CVSup in the FreeBSD Handbook: http://www.FreeBSD.org/handbook/cvsup.html Building CVSup from the Sources ------------------------------- CVSup is written in Modula-3, a modern, compiled, object-oriented language. Modula-3 integrates threads, exceptions, and garbage collection, providing an ideal vehicle for this sort of application. Without Modula-3, CVSup would almost certainly not exist today. If you wish to build CVSup from the sources, you will first need to install the free Modula-3 compiler and runtime libraries. This release of CVSup has been tested using both SRC Modula-3 release 3.6 and the PM3-1.1.13 release. They are available from the following locations: SRC: http://www.research.digital.com/SRC/modula-3/html/srcm3.html PM3: http://m3.polymtl.ca/m3/ The PM3 release is more actively maintained, and it includes fixes for a number of bugs that are present in SRC Modula-3. Patches to fix the bugs are available from the SRC web site, but they must be applied manually. The PM3 release is available as Linux RPMs as well as in source form. A FreeBSD port of SRC Modula-3 (including the necessary patches) is available in the FreeBSD ports collection, in "lang/modula-3". The corresponding package is, of course, available in the packages collection. You will also need version 1.0.4 or later of the "zlib" library. In FreeBSD-2.1.6 and later releases, this library has been incorporated into the system sources, in "src/lib/libz". Prior to that, a FreeBSD port was available in "devel/libz" of the FreeBSD ports collection. For other sources of this library, see the "Install" file. Do not try to use versions earlier than 1.0.4. To build the entire system from source under FreeBSD, simply type "make" in the top-level directory. (That's the directory that has sub-directories named "client" and "server", among others.) To force the executables to be statically linked, add M3FLAGS=-DSTATIC to the command line. To build the client without the GUI (e.g., if you don't have the X Window System installed on your machine), add M3FLAGS=-DNOGUI To do both of these things, use quotes like this: M3FLAGS="-DSTATIC -DNOGUI" The Makefiles should work on any reasonable Unix system. If you have trouble with them, it is easy to build the components manually. Simply chdir into each of the following subdirectories in the given order and type "m3build": suptcp suplib client server cvpasswd To build statically linked executables, add "-DSTATIC" to each "m3build" command. To build the client without the GUI, add "-DNOGUI". Notes for Specific Platforms ---------------------------- The following hints have been found to work. They don't exclude other possibilities, of course. FreeBSD/i386: Use either the PM3 compiler or the SRC compiler from the FreeBSD ports collection. FreeBSD/alpha: Use the PM3 compiler with the "FBSD_ALPHA" target. Linux: Use the PM3 compiler. Solaris: Use the PM3 compiler (the "SOLgnu" target). Digital Unix: Use the SRC compiler (the "ALPHA_OSF" target). Be sure to apply this patch first: http://www.research.digital.com/SRC/modula-3/html/patches36.html#randomReal64 When you run cvsup or cvsupd, you must add the argument "@M3nopreemption" to the command line. The PM3 compiler probably works too, but I haven't tested it. NetBSD, OpenBSD, BSD/OS: Use the FreeBSD static a.out binaries. When you run cvsup or cvsupd, you must add the argument "@M3novm" to the command line. Portability Issues ------------------ I intend for CVSup to be portable to most POSIX systems. Earlier releases have been run on a number of different platforms, including FreeBSD, Linux, HP-UX, SunOS, Solaris, and DEC OSF/1 ALPHA. In the current release I have attempted to increase rather than decrease portability. Anybody who succeeds in porting CVSup to other systems is encouraged to send his changes to <cvsup-bugs@polstra.com>. As long as the changes are reasonably palatable, they will be incorporated into future CVSup releases. CVSup uses several POSIX-specific functions which may make it more of an effort to port the package to non-POSIX systems such as Win32. These functions include mmap, fork, syslog, stat, and chmod, among others. Status of this Release ---------------------- CVSup was first released publicly in August of 1996. Since then it has seen heavy use, and it has been quite stable. Like all software, though, it is not perfect. Please be prepared to find bugs -- without a doubt, there are some. Problems? --------- Please report bugs to <cvsup-bugs@polstra.com>. For More Information -------------------- http://www.polstra.com/projects/freeware/CVSup/ John Polstra, <jdp@polstra.com> Copyright 1996, 1997, 1998, 1999 John D. Polstra $Id: Announce,v 1.47 1999/12/10 16:25:29 jdp Exp $ This is the moderated mailing list freebsd-announce. The list contains announcements of new FreeBSD capabilities, important events and project milestones. See also the FreeBSD Web pages at http://www.freebsd.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-announce" in the body of the message