This file contains various information about doing releng-y stuff.

Creating a branch:

    cvs rtag -a netbsd-5-base xsrc src
    cvs rtag -a -b -rnetbsd-5-base netbsd-5 src xsrc

On the newly-created branch:

On the trunk:

Cutting release candidates and releases:

  1. Make sure release notes are updated in distrib/notes

    A good starting point is to generate notes for a sample port (cd distrib/notes/amd64; make USETOOLS=no), read the HTML file, and look for things that need updating.

    Stuff you'll definitely need to do:

    • Brace yourself. The sheer amount of useless information from days of yore will blow you away. You'll even start to think "you know, it's possible someone actually does want to read about splitting distribution sets so they'll fit on floppies."
    • Update Dd (should be the day the release is tagged)
    • Update version numbers
    • Add mention of the latest CHANGES-<version> file in the "Release Contents" section
    • Adjust known issues section as necessary
    • Adjust compatibility issues section as necessary
    • Check the {core,portmasters,releng,developers} lists (while grumbling about how you really ought to just remove this ridiculous self-indulgent section from the notes entirely).

    We now only include a summary of chnages in htdocs. Basically, in htdocs/releases/formal-<blah>, copy the previous release's XML files, adjust Makefile as necessary, and start the dull process of adding content. Beware that this is a soul-sucking task, and you MUST RESIST THE TEMPTATION TO MENTION EVERY LITTLE CHANGE. Try to keep it to a list of things that people will be excited about and will sell NetBSD. Release notes != changelog.

    Don't forget to edit htdocs/layout.xml and add an entry for the new page.

  2. Update version numbers in gnu/usr.bin/groff/tmac/mdoc.local and sys/sys/param.h. Add new CHANGES file to doc/README.files, updating release numbers while there. Make sure doc/LAST_MINUTE is zeroed out and adjust version number.

  3. Note changes from steps 1 and 2 in doc/CHANGES-<whatever>

  4. cvs -f rtag -a -rnetbsd-5 netbsd-5-0-RELEASE src xsrc

    If something needs to be retagged after the fact:

    • Change <file> on the netbsd-5 branch.
    • cvs tag -d netbsd-5-0-RELEASE <file>
    • cvs tag -rnetbsd-5 netbsd-5-0-RELEASE <file>
  5. Add tag (netbsd-5-0-RELEASE) to ~builds/etc/archlist on Add tag to AB_STICKY_TAG_LIST in ~builds/etc/autobuild.conf. Note that these files are revision controlled (localsrc/releng/autobuild/etc), so the proper order is to commit your changes in localsrc and then cvs up (it pulls from anoncvs@nbcvs) on

  6. Add tag to ~builds/etc/build_order like: netbsd-5-0-RELEASE:N:N This means the tag will only be built once, and it won't be uploaded after it finishes building. Put it below the top-most entry (the entry at the very top is the one currently being built).

  7. Spend the next few hours worrying about some unforeseen or sporadic problem causing one or more ports to fail. Cross your fingers and hope that you're spared the hassle. If you're not so lucky, dig around and manually rebuild a port, copying the line from logs, mainly to preserve the -B flag's argument.

  8. Create ISOs (macppc and mac68k). See below for instructions. Create hashes for ISOs (cksum -a sha512 NetBSD* > SHA512)

  9. rsync to nbftp. It goes to a staging dir in /pub/NetBSD/misc/releng first.

     rsync -avu --progress --port 874 --password-file /home/builds/.rsync <path-to-top-level-release-dir>

    This will upload the files to After that, get admins to create /pub/NetBSD/NetBSD-<release> and /pub/NetBSD/iso/<release> directories for you, owned by builds:builds. Once these have been made, move images/* to the iso directory and symlink to "iso" and "images" in the main release directory, and move the rest to the main release directory.

  10. create torrents

    In the images directory:

    for i in NetBSD-* ; do
    maketorrent-console $i
  11. Get admins@ to add the torrent directory to ~torrent/runbt.
    NOTE FROM SPZ, 2010-11-15:

    it turns out that bittorrent can't do more than one 'allowed_dir'.

    Thus, we now have /ftp/pub/NetBSD/torrent. Please keep the permissions so that mirrors can't read the contents, since the contents are duplicate.

    (This should go into releng docs probably:) If you add a file that should be picked up by torrents, put it and its torrent control file where it belongs and hard-link the two into the appropriate directory in the torrent tree. Please note that the torrent tree cannot be used to publish the torrent control file via http or ftp.

  12. Get security-officer@ to sign binaries and ISOs. localsrc/security/programs/

  13. Give mirror-maintainers@ a heads up that new release binaries are available. This should be done 3ish days prior to the expected announce date.

  14. Update the website.

    • Commit release's HTML file in htdocs/releases/formal-<blah>
    • Update htdocs/share/xml/misc.ent (release.*)
    • Add htdocs/support/security/patches-<blah>
    • Update htdocs/support/security/index.xml
    • Update htdocs/support/security/release.xml
    • Update htdocs/releases/formal-<blah>/index.xml
    • Update htdocs/releases/formal.xml
    • Update htdocs/releases/index.xml
    • Update htdocs/mirrors/torrents/
    • Update htdocs/about/history.xml
    • Update htdocs/changes/index.xml
    • Update htdocs/index.html
    • Update htdocs/developers/features/
    • Update htdocs/docs/guide/en/chap-fetch.xml
    • Update htdocs/ports/history.xml
    • Update htdocs/docs/index.xml
    • Top-level regen of everything
  15. Update the wiki.

    export OLD_REL_VER="7.0.1"
    export OLD_REL_URL=""
    export NEW_REL_VER="7.0.2"
    export NEW_REL_URL=""
    sed -i.orig -Ee "s;^(.*)\[$OLD_REL_VER]\($OLD_REL_URL\)$;\1[$NEW_REL_VER]($NEW_REL_URL);" ports.mdwn
    sed -i.orig -e "/cur_rel/ s/$OLD_REL_VER/$NEW_REL_VER/" ports/*.mdwn
    [ if it is a major release please also bump future_rel, changes_cur and changes_future similarly ]

  16. Update /pub/NetBSD/README to mention the new release

  17. Update localsrc/admin/mirrors/ $oldest and $latest variables as needed

  18. Announce the release on netbsd-announce@ and the blog.


The following stuff should be done on as the 'builds' user.

Images that need to be built manually: macppc and mac68k

Needs to be cdrtools 2.01 (but not newer!). The binary in ~/bin/mkisofs will work.

    cd ~/scratch
    tar xzvpf /home/builds/ab/HEAD/ab-src.tgz (note -- "HEAD" is always used)

Building in src/distrib/cdrom:

Copy and fiddle with some ridiculous .mk and .conf files, adjusting for the relevant release.

Do the following two times, changing TARGET_CD_IMAGE to macppccd and mac68kcd.

    make MKISOFS=/home/builds/bin/mkisofs USETOOLS=no RELEASE=5.0 TARGET_CD_IMAGE=macppccd DISTRIBDIR=/home/builds/ab/netbsd-5-0-RC4/release/netbsd-5-0-RC4/200904142015Z all


create netbsd-5-0 branch:

    cvs rtag -a -b -rnetbsd-5 netbsd-5-0 src xsrc
Add a comment
Contact | Disclaimer | Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.
NetBSD® is a registered trademark of The NetBSD Foundation, Inc.