Checkout and update system sources and pkgsrc with cvsup or csup

From NetBSD Wiki

Jump to: navigation, search

Contents

Introduction

Sources of NetBSD can be updated with multiple tools.
One of them is cvsup or csup, which is also the "FreeBSD way" to update the system sources.
CVSup is a CVS-optimized general-purpose network file distribution system.
CSup is CVSup rewritten in C which makes it faster and more portable compared to the original CVSup which is written in modula3.


Disk space requirements

You will need about 900 MB for the entire source tree.


Build the required application

Building cvsup or csup is as easy as running two commands:
CVSup:

# cd /usr/pkgsrc/devel/cvsup ; make install clean


CSup:

# cd /usr/pkgsrc/net/csup ; make install clean

There are also precompiled binaries in the pkgsrc tree that you can use instead.

If you do not have the initial packages you can always download a tarball from ftp://ftp.netbsd.org:/pub/NetBSD/packages/pkgsrc.tar.gz
or from your local ftp mirror.
List of the mirror sites is avaliable at: http://www.netbsd.org/mirrors/
Move then pkgsrc.tar.gz to /usr and unpack it running:

# tar zxf pkgsrc.tar.gz


Now create configuration file for cvsup/csup.
Edit /etc/supfile putting there:

### Tags: ###
*default release=cvs tag=.                   # NetBSD CURRENT
#*defaultrelease=cvs tag=netbsd-3.0-PATCH001
#*default release=cvs tag=netbsd-3-0
#*default release=cvs tag=netbsd-3

### CVSup/CSup sites: ###
*default host=cvsup.se.netbsd.org
#*default host=cvsup.no.netbsd.org
#*default host=cvsup.jp.NetBSD.org
#*default host=cvsup2.jp.NetBSD.org
#*default host=cvsup.uk.NetBSD.org
#*default host=cvsup.us.NetBSD.org

*default delete use-rel-suffix
*default umask=002

*default base=/usr                      # Location to put the repository
*default prefix=/usr                    # Where to put the sup subdirectory
*default compress                       # Use this unless your network link
                                        # is a T1 or faster

# You can get everything using the ``netbsd collection.
# Alternatively, comment out the ``netbsd collection and just get one or
# more of the partial collections by uncommenting them below.

netbsd-src
netbsd-pkgsrc                               # Packages
netbsd-pkgsrc-wip    prefix=/usr/pkgsrc     # WIP (work in progress) packages [1] - Put in /usr/pkgsrc/wip
#netbsd-htdocs                              # WWW pages
#netbsd-othersrc                            # Other Sources
#netbsd-xsrc                                # The X11 distribution
#netbsd-basesrc                             # The base distribution
#netbsd-syssrc                              # The kernel distribution
#netbsd-crypto                              # Crypto sources
#netbsd-sharesrc                            # The /usr/share distribution
#netbsd-gnusrc                              # GNU Sources
#netbsd-doc                                 # Documentation

#To get certain module from certain date:
#netbsd-src tag=. date=2004.07.15.10.10.10
#To get a certain tagged pkgsrc branch:
#netbsd-pkgsrc tag=pkgsrc-2009Q1

Note [1] - You can also use cvsup/csup to check out WIP packages which go to /usr/pkgsrc/wip becouse of the prefix= option . I am not sure but I think this works only with the swedish mirror.

Next create a shell script to easly fire up new update session.
Mine is placed in /usr/local/sbin/cvsrun as my LOCALBASE is set to /usr/local (LOCALBASE=/usr/local set in /etc/mk.conf).
You can put it anywhere in your $PATH , i.e /usr/pkg/sbin
The script looks as follows:

#!/bin/sh
export PATH="/usr/local/bin:/usr/local/sbin:/usr/pkg/bin:/usr/pkg/sbin:${PATH}"

#Use one of following:
#XSUP=${XSUP:-`which cvsup`}  # CVSup
XSUP=${XSUP:-`which csup`}    # CSup 

echo Subject: `hostname`  ${XSUP} run output
${XSUP} -g -L 2 /etc/supfile

Change the file's mode so it can be executed only by root:

# chmod 700 /usr/local/sbin/cvsrun

Run cvsup/csup

Now you can simply run the cvsrun command:

# cvsrun

and your sources will be automatically updated using the definitions from the /etc/supfile file.
The output will look like this:

# cvsrun
Subject: xyz.yazzy.net cvsup run output
Parsing supfile "/etc/supfile"
Connecting to cvsup.no.netbsd.org
Connected to cvsup.no.netbsd.org
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection netbsd-src/cvs
Edit src/bin/date/netdate.c
Add delta 1.25 2006.06.14.16.35.16 ginsbach
Edit src/crypto/dist/ssh/sshconnect.c
Add delta 1.35 2006.06.14.15.36.00 ginsbach


That's all folks.
YazzY.

Personal tools