cvsup

Vincent Stemen vs1 at crel.us
Tue Jan 15 14:23:27 PST 2008


I spent half the evening the other day trying to figure out how to 
update our copy of the Dragonfly cvs repository so that I could checkout
the latest sources to test the patch for the directory rename bug.  All
the Dragonfly instructions seem to be oriented toward mirroring the
repository with cvsup and then checking out code from your local
/home/dcvs directory.  

The problem was *cvsup* was not installed on our machines,  although the
supfiles were.  It was not packaged as a binary package from pkgsrc, or
included in the base system sources.  In trying to compile it from
pkgsrc I got this error:

  ERROR: This package is only available for these platforms: FreeBSD-*-i386 
  NetBSD-*-i386 OpenBSD-*-i386 Linux-*-i386.
  ERROR: This package has set PKG_FAIL_REASON:
  ERROR: ezm3-1.2nb2 is not available for DragonFly-1.10.1-i386
  *** Error code 1

I finally found it as a FreeBSD binary in the live file system on the
Dragonfly installation CD.  I am guessing that the Dragonfly installer
installs it from there.  If so, it was our own fault it did not get
installed, as we are doing some custom inhouse stuff with Dragonfly and
our machines were not installed using the normal method.

However, while researching to resolve the problem I found this posting
from Matt from a few years ago.

======
From:   Matthew Dillon <dillon at xxxxxxxxxxxxxxxxxxxx>
Date:   Thu, 29 Dec 2005 11:54:43 -0800 (PST)

:    Actually it has *always* been on the release CD.  I totally forgot
:    about it... it's because it doesn't work in pkgsrc yet and we switched
:    the nrelease build over to package source.  Joerg was supposed to get
:    that working but as he has not I will take a shot at it.
:

    Excuse me a moment while I go off into a corner and scream bloody
    murder at the authors of ezm3 (which cvsup needs to build).  There are,
    literally, HUNDREDS of os-dependant files, no worthwhile documentation,
    and no mechanisms that I can see to help port to a new OS or generate
    any of the required dependancies.  There are insane dependancies that go
    deep, deep into system internals.  If there is a poster boy on how NOT
    to write a language, ezm3 would be it :-(.

    I am just going to take the cvsup binary from FreeBSD-4 and make the 
    nrelease build use it directly.  Fortunately we still ship with all the
    required compatibility libraries.  Then we will shift away from using
    cvsup for 1.5 and later.  I really love the cvsup program, but the
    language support is just too much of a headache.

                                        -Matt
                                        Matthew Dillon
======


I was dismayed to discover that the BSD community (not just DragonFly)
has created such as dependency on a tool written in an obscure
problematic language such as Modula-3 that are not even easily ported to
platforms such as DragonFly, causing us to have to run a binary from
different platform after all this time.

I found csup, a cvsup replacement written in C, only to discover it
currently only supports what is called CVS mode, which means I cannot
use it to download/update the repository.

My questions are:

Is the repository available via rsync and, if not, I am curious as to
why not?  Rsync is robust, popular, portable, and written in C.

Also, has anybody considered writing some front end scripts to rsync to emulate
the necessary features of cvsup?  I have found rsync to be very fast since it
efficiently only transfers what has changed.  I also do not see any reason for
the mirroring tool to need any knowledge of a specific repository type (e.g
cvs, svn, etc).  You are just mirroring files.

With rsyncs include/exclude lists, I am sure the required features of
cvsup could easily be mimicked.






More information about the Users mailing list