3 # generate-release.sh: check out source trees, and build release components with
4 # totally clean, fresh trees.
6 # Usage: generate-release.sh [-r revision] svn-branch scratch-dir
8 # Environment variables:
9 # CVSUP_HOST: Host of a cvsup server to obtain the ports and documentation
10 # trees. This or CVSROOT must be set to include ports and documentation.
11 # CVSROOT: CVS root to obtain the ports and documentation trees. This or
12 # CVSUP_HOST must be set to include ports and documentation.
13 # CVS_TAG: CVS tag for ports and documentation (HEAD by default)
14 # SVNROOT: SVN URL to FreeBSD source repository (by default,
15 # svn://svn.freebsd.org/base)
16 # MAKE_FLAGS: optional flags to pass to make (e.g. -j)
17 # RELSTRING: optional base name for media images (e.g. FreeBSD-9.0-RC2-amd64)
19 # Note: Since this requires a chroot, release cross-builds will not work!
26 echo "Usage: $0 [-r revision] svn-branch scratch-dir"
31 while getopts r: opt; do
41 shift $(($OPTIND - 1))
47 set -e # Everything must succeed
53 MAKE_FLAGS="$MAKE_FLAGS -j "$(sysctl -n hw.ncpu)
59 svn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src $REVISION
60 if [ ! -z $CVSUP_HOST ]; then
61 cat > $2/docports-supfile << EOF
62 *default host=$CVSUP_HOST
65 *default release=cvs tag=${CVS_TAG:-.}
66 *default delete use-rel-suffix
71 elif [ ! -z $CVSROOT ]; then
73 cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} ports
74 cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} doc
78 make $MAKE_FLAGS buildworld
79 make installworld distribution DESTDIR=$2
80 mount -t devfs devfs $2/dev
81 trap "umount $2/dev" EXIT # Clean up devfs mount on exit
83 if [ ! -z $CVSUP_HOST ]; then
84 cp /etc/resolv.conf $2/etc/resolv.conf
86 # Checkout ports and doc trees
87 chroot $2 /usr/bin/csup /docports-supfile
90 if [ -d $2/usr/doc ]; then
91 cp /etc/resolv.conf $2/etc/resolv.conf
93 # Build ports to build release documentation
94 chroot $2 /bin/sh -c 'pkg_add -r docproj || (cd /usr/ports/textproc/docproj && make install clean BATCH=yes WITHOUT_X11=yes JADETEX=no WITHOUT_PYTHON=yes)'
97 chroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel
98 chroot $2 make -C /usr/src/release release
99 chroot $2 make -C /usr/src/release install DESTDIR=/R
101 : ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`}
104 for i in release.iso bootonly.iso memstick; do
107 sha256 $RELSTRING-* > CHECKSUM.SHA256
108 md5 $RELSTRING-* > CHECKSUM.MD5