summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco S Hyman <marc@cvs.openbsd.org>2000-07-07 18:00:59 +0000
committerMarco S Hyman <marc@cvs.openbsd.org>2000-07-07 18:00:59 +0000
commite5da67eb8b146810241bfe1bb1ab7f71c98899bd (patch)
tree81e87d03a06d8d0e0cc3487a96a94853167b6f19
parent60cd7bca085a4c052cd3a1f3804083531a1f4f15 (diff)
First cut at 'how to make a release' doc. Please read, comment, and
either fix or send corrections
-rw-r--r--share/man/man8/Makefile4
-rw-r--r--share/man/man8/release.8386
2 files changed, 388 insertions, 2 deletions
diff --git a/share/man/man8/Makefile b/share/man/man8/Makefile
index 375ba0c7631..fcc324e59e9 100644
--- a/share/man/man8/Makefile
+++ b/share/man/man8/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.27 2000/04/21 21:27:32 deraadt Exp $
+# $OpenBSD: Makefile,v 1.28 2000/07/07 18:00:58 marc Exp $
# $NetBSD: Makefile,v 1.13 1996/03/28 21:36:40 mark Exp $
# @(#)Makefile 8.1 (Berkeley) 6/5/93
@@ -6,7 +6,7 @@ MAN= afterboot.8 compat_bsdos.8 compat_freebsd.8 compat_ibcs2.8 \
compat_linux.8 compat_sunos.8 \
compat_svr4.8 compat_ultrix.8 crash.8 dhcp.8 diskless.8 intro.8 rc.8 \
rc.conf.8 rc.shutdown.8 ssl.8 sticky.8 update.8 yp.8 boot_config.8 \
- vpn.8
+ vpn.8 release.8
SUBDIR= man8.amiga man8.hp300 man8.i386 man8.mac68k man8.sparc
MLINKS= afterboot.8 faq.8 \
diff --git a/share/man/man8/release.8 b/share/man/man8/release.8
new file mode 100644
index 00000000000..1d210f4c89f
--- /dev/null
+++ b/share/man/man8/release.8
@@ -0,0 +1,386 @@
+\.\" $OpenBSD: release.8,v 1.1 2000/07/07 18:00:58 marc Exp $
+.\"
+.\" Copyright (c) 2000 Marco S. Hyman
+.\"
+.\" Permission to copy all or part of this material for any purpose is
+.\" granted provided that the above copyright notice and this paragraph
+.\" are duplicated in all copies. THIS SOFTWARE IS PROVIDED ``AS IS''
+.\" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
+.\" LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE.
+.\"
+.Dd July 6, 2000
+.Dt RELEASE 8
+.Os
+.Sh NAME
+.Nm release
+.Nd building an
+.Ox
+release
+.Sh DESCRIPTION
+There are several steps necessary to build a system release. They are
+.Pp
+.Bl -enum -compact
+.It
+Update sources
+.It
+Build and install a new kernel
+.It
+Build a new system
+.It
+Make and validate the system release
+.It
+Build and install X11
+.It
+Make and validate the X11 release
+.It
+Make the third party packages
+.El
+.Pp
+The following sections describe each of the needed steps in detail.
+.Ss "1. Update sources"
+.Pp
+A release should always start from a known set of
+.Em coherent
+sources. The easiest way to ensure that the sources are complete
+and coherent is to check the sources out using the
+.Tn CVS
+tag the
+.Ox
+developers add to the repository prior to making a release. There
+are two tags, one which identifies the release as it exists on the
+.Tn CD\-ROM
+and another which identifes the
+.Em stable
+branch. The
+.Em stable
+branch, starting with
+.Ox 2.7 ,
+contains the patches described in
+.Pa http://www.openbsd.org/errata.html .
+The tags are of the form:
+.Bl -tag -width OPENBSD_x_y_BASE
+.It Pa OPENBSD_x_y_BASE
+This tag marks the source as it exists on the release
+.Tn CD\-ROM
+where
+.Pa x
+is the major release number and
+.Pa y
+is the minor release number.
+.It Pa OPENBSD_x_y
+This tag is a moving target. It marks the sources that belong to the
+stable branch. This branch
+.Em only
+contains errata, no new features.
+.El
+To update your sources to the versions identified by one of the above
+tags use the commands:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+.Li "cd /usr/src && cvs up -r TAG -Pd"
+.It
+.Li "cd X11SRC && cvs up -r TAG -Pd"
+.It
+.Li "cd PORTSPATH && cvs up -r TAG -Pd"
+.El
+.Pp
+Replace
+.Pa X11SRC
+with the path to your
+.Tn X11R6
+sources. Replace
+$PORTSPATH
+with the path to your ports tree sources, typically
+.Pa /usr/ports .
+The above command assume an existing source tree. See
+.Pa http://www.openbsd.org/anoncvs.html
+for instructions on fetching the sources for the first time.
+.Bd -offset indent
+.Sy Warning :
+.Tn CVS
+tags are
+.Sq sticky .
+See
+.Xr cvs 1
+for more information.
+.Ed
+.Ss "2. Build and install a new kernel"
+.Pp
+For safety, you should always build and install a new kernel before
+building the programs that will use the kernel. This ensures that
+any new system calls, for example, will be present when needed.
+To build a kernel the steps are:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+.Li "cd /sys/arch/${ARCH}/conf"
+.br
+where
+.Va ${ARCH}
+is the architecture of your machine, e.g.
+.Li i386 .
+.It
+.Li "vi ${NAME}"
+.br
+where
+.Va ${NAME}
+is your kernel config file. You should
+.Em not
+edit
+.Li GENERIC ,
+create your own kernel configuration if you need to make modifiations.
+If using
+.Li GENERIC
+you can skip this step. And yes, you may use
+.Li emacs
+or any other editor you choose.
+.It
+.Li "config ${NAME}"
+.It
+.Li "cd ../compile/${NAME}"
+.It
+.Li "make clean && make depend && make"
+.br
+In this instance
+.Li "make clean"
+is your friend.
+.It
+.Li su
+.It
+.Li "mv /bsd /bsd.old && mv bsd / && chown root.wheel /bsd"
+.It
+.Li "sync; sync; reboot"
+.br
+You can also use
+.Bd -literal -compact -offset indent
+shutdown -r now
+.Ed
+.br
+for a more orderly shutdown if you're not in a hurry.
+.El
+.Pp
+If the system does not come up you can boot using
+.Pa bsd.old .
+.Ss "3. Build a new system"
+.Pp
+Now that you are running using your new kernel you can build a new system.
+It's safer (but slower) to remove and re-build your object directories
+and re-building them before the build. The steps are:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+.Li "cd /usr/obj && mkdir -p .old && sudo mv * .old && sudo rm -rf .old &"
+.br
+This moves all your existing object out of the way and then removes them in
+the background.
+.It
+.Li "cd /usr/src && nice make obj"
+.br
+this re-builds your obj directories
+.It
+.Li su
+.It
+.Li "nice make build"
+.br
+If you've
+.Xr sudo 8
+set up you can combine this with the previous step using the command
+.Bd -literal -compact -offset indent
+nice make SUDO=sudo build
+.Ed
+.It
+Update
+.Pa /etc ,
+.Pa /var ,
+and
+.Pa /dev/MAKEDEV
+by hand.
+.El
+.Pp
+At this point your system is up-to-date and running the code that you
+are going to make into a release.
+.Ss "4. Make and validate the system release"
+.Pp
+The system release consist of a generic kernel, one
+.Tn CD\-ROM
+and two floppy bootable filesystems, the release
+.Sq tarballs ,
+installation instructions, and checksum files.
+.Pp
+The release process requires two work areas. They are:
+.Bl -tag -width "RELEASEDIR "
+.It Pa DESTDIR
+This is the name of a directory which will be the root of a a complete
+.Ox
+installation, thus it must be on a disk partition large enough to
+store the entire operating system (less
+.Tn X11R6
+and any third party
+.Sq packages ) .
+The directory can be removed once the release is created. In any case the
+release process ensures the directory is empty before starting.
+.It Pa RELEASEDIR
+This is the name of a directory where the release output files are
+stored. The following process will create the directory if necessary.
+.El
+.Pp
+The floppy and
+.Tn CD\-ROM
+.Pa RAMDISK
+images require a special tool which is created first. The release process
+is:
+.Bl -bullet -compact -offset indent
+.It
+.Li su
+.br
+you must be root to create a release
+.It
+.Li "cd /usr/src/distrib/crunch && make clean && make && make install"
+.br
+create the special tools needed to build the release
+.It
+.Li "export DESTDIR=your-destdir RELEASEDIR=your-releasedir"
+.It
+.Li "test -d ${DESTDIR} && mv ${DESTDIR} ${DESTDIR}- && rm -rf ${DESTDIR}- &"
+.It
+.Li "mkdir -p ${DESTDIR} ${RELEASEDIR}"
+.br
+these two steps ensure
+.Pa ${DESTDIR}
+exists an empty directory and
+.Pa ${RELEASEDIR}
+exists.
+.It
+.Li "cd /usr/src/etc && nice make release"
+.It
+.Li "cd /usr/src/distrib/sets && csh checkflist"
+.br
+this checks that the contents of
+.Pa ${DESTDIR}
+pretty much match the contents of the release
+.Sq tarballs .
+.It
+.Li "unset RELEASEDIR DESTDIR"
+.El
+.Pp
+At this point you have most of an
+.Ox
+release. The only thing missing is
+.Pa X11R6
+(which is covered in the next section).
+.Ss "5. Build and install X11"
+.Pp
+The
+.Pa X11
+tree is primarily
+.Pa imake
+based and doesn't contain the
+.Pa obj
+directory mechanism that comes with Berkeley
+.Pa make .
+While the tree can be built in place, it's better to refrain from
+poluting the cvs sources. An alternate build location needs to
+be selected, large enough to hold the
+.Tn X11R6
+object files, libraries, and binaries. Call this location
+.Pa X11BLD .
+.Pa X11SRC
+is the path to your
+.Pa X11R6
+sources. Once you've selected
+.Pa X11BLD the build process is:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+.Li su
+.It
+.Li "test -d X11BLD && mv X11BLD X11BLD- && rm -rf X11BLD- &"
+.It
+.Li "mkdir -p /usr2/X11"
+.It
+.Li "cd X11BLD && lndir X11SRC && nice make build"
+.El
+.Pp
+Once the build is done you've a new
+.Pa X11R6 ...
+almost. The install phase of the build does
+.Em not
+overwrite
+.Pa /var/X11/xdm .
+That directory must be installed by hand.
+.Ss "6. Make and validate the X11 release"
+.Pp
+.Pa X11R6
+uses the same
+.Pa DESTDIR
+and
+.Pa RELEASEDIR
+mechanism noted in the section on building a system release, above.
+They may be the same values used above, but be warned that the
+contents of
+.Pa DESTDIR
+will be removed. The steps to build the release are (assuming you
+are still root, and still in
+.Pa X11BLD ) :
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+.Li "export DESTDIR=your-destdir RELEASEDIR=your-releasedir"
+.It
+.Li "test -d ${DESTDIR} && mv ${DESTDIR} ${DESTDIR}- && rm -rf ${DESTDIR}- &"
+.It
+.Li "mkdir -p ${DESTDIR} ${RELEASEDIR}"
+.It
+.Li "nice make release"
+.It
+.Li "unset RELEASEDIR DESTDIR"
+.El
+.Pp
+At this point you have both system and
+.Pa X11R6
+.Sq tarballs
+in your release directory.
+.Ss "7. Make the third party packages"
+.Pp
+The
+.Sq ports
+sub-system of contributed applications is described in
+.Xr ports 7 . For ease of installation ports can be pre-compiled
+into
+.Sq packages
+which can them be installed onto machines using
+.Xr pkg_add 1 .
+Packages are created by:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+Select an application to build, we'll call it
+.Pa CATEGORY/PORT .
+.It
+.Li "cd /usr/ports/CATEGORY/PORT"
+.It
+.Li su
+.It
+.Li "make package"
+.El
+.Pp
+That's all there is to it.
+.\".Sh ENVIRONMENT
+.\".Sh FILES
+.\".Sh EXAMPLES
+.\".Sh DIAGNOSTICS
+.Sh SEE ALSO
+.Xr cvs 1 ,
+.Xr pkg_add 1 ,
+.Xr ports 7 ,
+.Xr sudo 8
+.Sh HISTORY
+This document first appeared just after the release of
+.Ox 2.7 .
+.Sh AUTHORS
+Written by Marco S. Hyman using information gleaned from the various
+.Ox
+mailing lists and e-mail conversions with Theo de Raadt, Niklas Hallqvist,
+Todd T. Fries, and Todd C. Miller.