generate-release.sh revision 227536
1#!/bin/sh 2 3# generate-release.sh: check out source trees, and build release components with 4# totally clean, fresh trees. 5# 6# Usage: generate-release.sh svn-branch scratch-dir 7# 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) 18# 19# Note: Since this requires a chroot, release cross-builds will not work! 20# 21# $FreeBSD: head/release/generate-release.sh 227536 2011-11-15 18:49:27Z nwhitehorn $ 22# 23 24mkdir -p $2/usr/src 25set -e # Everything must succeed 26 27svn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src 28if [ ! -z $CVSUP_HOST ]; then 29 cat > $2/docports-supfile << EOF 30 *default host=$CVSUP_HOST 31 *default base=/var/db 32 *default prefix=/usr 33 *default release=cvs tag=${CVS_TAG:-.} 34 *default delete use-rel-suffix 35 *default compress 36 ports-all 37 doc-all 38EOF 39elif [ ! -z $CVSROOT ]; then 40 cd $2/usr 41 cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} ports 42 cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} doc 43fi 44 45cd $2/usr/src 46make $MAKE_FLAGS buildworld 47make installworld distribution DESTDIR=$2 48mount -t devfs devfs $2/dev 49trap "umount $2/dev" EXIT # Clean up devfs mount on exit 50 51if [ ! -z $CVSUP_HOST ]; then 52 cp /etc/resolv.conf $2/etc/resolv.conf 53 54 # Checkout ports and doc trees 55 chroot $2 /usr/bin/csup /docports-supfile 56fi 57 58if [ -d $2/usr/doc ]; then 59 cp /etc/resolv.conf $2/etc/resolv.conf 60 61 # Build ports to build release documentation 62 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)' 63fi 64 65chroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel 66chroot $2 make -C /usr/src/release release 67chroot $2 make -C /usr/src/release install DESTDIR=/R 68 69: ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`} 70 71cd $2/R 72for i in release.iso bootonly.iso memstick; do 73 mv $i $RELSTRING-$i 74done 75sha256 $RELSTRING-* > CHECKSUM.SHA256 76md5 $RELSTRING-* > CHECKSUM.MD5 77 78