From owner-freebsd-hubs Mon Mar 23 21:44:33 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id VAA22657 for freebsd-hubs-outgoing; Mon, 23 Mar 1998 21:44:33 -0800 (PST) (envelope-from owner-freebsd-hubs@FreeBSD.ORG) Received: from austin.polstra.com (austin.polstra.com [206.213.73.10]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id VAA22643 for ; Mon, 23 Mar 1998 21:44:29 -0800 (PST) (envelope-from jdp@austin.polstra.com) Received: from austin.polstra.com (jdp@localhost) by austin.polstra.com (8.8.8/8.8.8) with ESMTP id VAA29037 for ; Mon, 23 Mar 1998 21:44:30 -0800 (PST) (envelope-from jdp) Message-Id: <199803240544.VAA29037@austin.polstra.com> To: hubs@FreeBSD.ORG Subject: CVSup 15.3 is now available Date: Mon, 23 Mar 1998 21:44:30 -0800 From: John Polstra Sender: owner-freebsd-hubs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Attached is the announcement for CVSup 15.3. If you are running a CVSup mirror site, this release can really help reduce the load on your system, by eliminating the file tree walk that has traditionally been done for each client connection. This works only for true mirror sites (not master sites), and you must enable it with a new cvsupd command line option "-s scanDir". If you are using the cvsup-mirror port, simply install the new version of the port that I committed tonight, or edit "/usr/local/etc/rc.d/cvsupd.sh" and add this to cvsupd's command line options: "-s sup.client". Also, this release fixes a thread stack overflow bug that could cause looping and/or core dumps in certain cases. This typically showed up when very out-of-date clients updated their "CVSROOT/modules,v" files. (The problem was triggered by RCS files with zillions of deltas. "modules,v" has almost 1900.) Finally, this release has a much better access control mechanism. I'll upgrade freefall and cvsup2.freebsd.org, and I hope the rest of you will upgrade your own mirrors soon. Thanks, John -- John Polstra jdp@polstra.com John D. Polstra & Co., Inc. Seattle, Washington USA "Self-knowledge is always bad news." -- John Barth Announcing CVSup 15.3 --------------------- Release 15.3 of CVSup, the CVS-aware network distribution system, is now available. Where to Get CVSup ------------------ CVSup is free software. It is available from the following FTP sites: ftp://ftp.FreeBSD.org/pub/FreeBSD/CVSup/ (California) ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/ (Germany) ftp://ftp.polstra.com/pub/FreeBSD/CVSup/ (slow; avoid if possible) Full sources as well as FreeBSD binaries are available: cvsup-bin-15.3.tar.gz FreeBSD static binaries for the client + GUI cvsup.nogui-bin-15.3.tar.gz FreeBSD static binaries for the client (no GUI) cvsupd-bin-15.3.tar.gz FreeBSD static binaries for the server cvsup-15.3.tar.gz Sources ** The MD5 file signatures for these files are: MD5 (cvsup-bin-15.3.tar.gz) = 95a7fc3273a60c36989aac64a005cf14 MD5 (cvsup.nogui-bin-15.3.tar.gz) = 336e98236e4d2a62795e83096a80f4f9 MD5 (cvsupd-bin-15.3.tar.gz) = e66c8478ff1390ff8baabebd6ab7d191 MD5 (cvsup-15.3.tar.gz) = 04438ae30094b8a81f2a3b0c48511b8f An updated port will appear in the FreeBSD ports and packages collections soon: Ports: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports-current/net/cvsup/ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports-current/net/cvsup-bin/ Packages: For FreeBSD-current: ftp://ftp.FreeBSD.org/pub/FreeBSD/packages-current/net/cvsup-15.3.tgz ftp://ftp.FreeBSD.org/pub/FreeBSD/packages-current/net/cvsup-bin-15.3.tgz For FreeBSD-2.2: ftp://ftp.FreeBSD.org/pub/FreeBSD/packages-stable/net/cvsup-15.3.tgz ftp://ftp.FreeBSD.org/pub/FreeBSD/packages-stable/net/cvsup-bin-15.3.tgz If you want SOCKS support, you must also install the "modula-3-socks" port or package: Port: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports-current/lang/modula-3-socks/ Packages: ftp://ftp.FreeBSD.org/pub/FreeBSD/packages-current/lang/modula-3-socks-1.0.tgz ftp://ftp.FreeBSD.org/pub/FreeBSD/packages-stable/lang/modula-3-socks-1.0.tgz SOCKS is supported only under FreeBSD, and only with dynamically linked executables. The static binary distributions do not support SOCKS. ** If you wish to build CVSup from the sources, be sure to read the discussion further on in this announcement. Compatibility with Previous Releases ------------------------------------ This version is believed to interoperate properly with all earlier public releases of CVSup. If you run a cvsupd server and use the "cvsupd.access" file in conjunction with "-C 0" on the command line, be sure to read the first item in the next section. It is always a good idea to upgrade to the latest release. Bugs are fixed, features are added, and robustness is improved. Otherwise, I wouldn't bother with it. What Has Changed Since the Previous Release? -------------------------------------------- Implemented a much more flexible access control scheme in the server. It still uses the "cvsupd.access" file, and the syntax is backward compatible with the previous versions. But it adds a lot of capability, supporting both permit and deny rules with per-host and per-network connection limits. See cvsupd(8) for details. NOTE: The one incompatibility is that _all_ clients are now subject to the limit imposed by the server's "-C maxClients" command line option. If you have been using "-C 0" in conjunction with the "cvsupd.access" file, you will need to increase the number. Implemented a new "mirror mode" for servers that are mirroring files from a master site. It reduces the disk load by orders of magnitude. Mirror mode is enabled by a new "-s" option to cvsupd. See cvsupd(8) for full details. Restructured a recursive function which could cause a thread stack to overflow in pathological cases involving RCS files with zillions of deltas. If you have ever seen illegal instruction faults, segmentation violations, or infinite looping (especially when updating CVSROOT/modules,v), this is the fix for it. Fixed the protocol engine so that a lost network connection no longer can cause a misleading error message. This also fixed a rare problem (I've only seen it once) in which a lost connection at exactly the wrong time could abort the server due to an assert failure. Made the server processes display pertinent information about what they are doing in the Unix "ps" listing. [Supported only under FreeBSD.] Fixed the server so that the whole thing doesn't die if a fork() fails. Improved the error message when a collection is temporarily unavailable because an NFS server is not responding. Fixed the Makefiles so that they are much more portable. You should be able to use them on any Unix system worthy of the name. Beefed up the "-v" version messages so that the client indicates whether it is the GUI version, and both the client and server mention the e-mail address for bug reports. Added the bug reporting address to the info window in the client's GUI. Removed the obsolete "supconv" utility. Fixed lots of minor bugs. What Is CVSup? -------------- CVSup is a software package for distributing and updating collections of files across a network. CVSup is specifically tailored to distributing 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. It is especially valuable for people with slow Internet connections. 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. Note: Although this feature is fully implemented in CVSup, it will probably not be practical to use it until some small changes have been made to CVS. 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 executes 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 are currently running at about 20 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 from DEC SRC. A port 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, set the environment variable "M3FLAGS" to "-DSTATIC". To build the client without the GUI (e.g., if you don't have the X Window System installed on your machine), set it to "-DNOGUI". To do both of these things, set the environment variable to "-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 To build statically linked executables, add "-DSTATIC" to each "m3build" command. To build the client without the GUI (e.g., if you don't have the X Window System installed on your machine) add "-DNOGUI". 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 . 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. Please report bugs to . John Polstra, Copyright 1996-1998 John D. Polstra $Id: Announce,v 1.34 1998/03/24 02:06:00 jdp Exp $ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hubs" in the body of the message