generate-release.sh revision 230106
1219508Snwhitehorn#!/bin/sh 2219508Snwhitehorn 3219508Snwhitehorn# generate-release.sh: check out source trees, and build release components with 4219610Snwhitehorn# totally clean, fresh trees. 5219508Snwhitehorn# 6230106Sglebius# Usage: generate-release.sh [-r revision] svn-branch scratch-dir 7219508Snwhitehorn# 8219508Snwhitehorn# Environment variables: 9219610Snwhitehorn# CVSUP_HOST: Host of a cvsup server to obtain the ports and documentation 10219788Snwhitehorn# trees. This or CVSROOT must be set to include ports and documentation. 11219788Snwhitehorn# CVSROOT: CVS root to obtain the ports and documentation trees. This or 12219788Snwhitehorn# CVSUP_HOST must be set to include ports and documentation. 13219788Snwhitehorn# CVS_TAG: CVS tag for ports and documentation (HEAD by default) 14219788Snwhitehorn# SVNROOT: SVN URL to FreeBSD source repository (by default, 15219788Snwhitehorn# svn://svn.freebsd.org/base) 16219508Snwhitehorn# MAKE_FLAGS: optional flags to pass to make (e.g. -j) 17227536Snwhitehorn# RELSTRING: optional base name for media images (e.g. FreeBSD-9.0-RC2-amd64) 18219508Snwhitehorn# 19219508Snwhitehorn# Note: Since this requires a chroot, release cross-builds will not work! 20219508Snwhitehorn# 21219508Snwhitehorn# $FreeBSD: head/release/generate-release.sh 230106 2012-01-14 09:57:13Z glebius $ 22219508Snwhitehorn# 23219508Snwhitehorn 24230106Sglebiususage() 25230106Sglebius{ 26230106Sglebius echo "Usage: $0 [-r revision] svn-branch scratch-dir" 27230106Sglebius exit 1 28230106Sglebius} 29230106Sglebius 30230106Sglebiusargs=`getopt r: $*` 31230106Sglebiusif [ $? -ne 0 ]; then 32230106Sglebius usage 33230106Sglebiusfi 34230106Sglebiusset -- $args 35230106SglebiusREVISION= 36230106Sglebiuswhile true; do 37230106Sglebius case "$1" in 38230106Sglebius -r) 39230106Sglebius REVISION="-r $2" 40230106Sglebius shift; shift 41230106Sglebius ;; 42230106Sglebius --) 43230106Sglebius shift; break 44230106Sglebius ;; 45230106Sglebius esac 46230106Sglebiusdone 47230106Sglebius 48230106Sglebiusif [ $# -lt 2 ]; then 49230106Sglebius usage 50230106Sglebiusfi 51230106Sglebius 52219508Snwhitehornmkdir -p $2/usr/src 53221510Snwhitehornset -e # Everything must succeed 54221510Snwhitehorn 55230106Sglebiussvn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src $REVISION 56219508Snwhitehornif [ ! -z $CVSUP_HOST ]; then 57219610Snwhitehorn cat > $2/docports-supfile << EOF 58219508Snwhitehorn *default host=$CVSUP_HOST 59219508Snwhitehorn *default base=/var/db 60219508Snwhitehorn *default prefix=/usr 61219788Snwhitehorn *default release=cvs tag=${CVS_TAG:-.} 62219508Snwhitehorn *default delete use-rel-suffix 63219508Snwhitehorn *default compress 64219508Snwhitehorn ports-all 65219610Snwhitehorn doc-all 66219508SnwhitehornEOF 67219788Snwhitehornelif [ ! -z $CVSROOT ]; then 68219788Snwhitehorn cd $2/usr 69221510Snwhitehorn cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} ports 70221510Snwhitehorn cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} doc 71219508Snwhitehornfi 72219508Snwhitehorn 73219508Snwhitehorncd $2/usr/src 74221510Snwhitehornmake $MAKE_FLAGS buildworld 75221510Snwhitehornmake installworld distribution DESTDIR=$2 76219508Snwhitehornmount -t devfs devfs $2/dev 77221510Snwhitehorntrap "umount $2/dev" EXIT # Clean up devfs mount on exit 78219508Snwhitehorn 79219508Snwhitehornif [ ! -z $CVSUP_HOST ]; then 80219508Snwhitehorn cp /etc/resolv.conf $2/etc/resolv.conf 81219610Snwhitehorn 82219610Snwhitehorn # Checkout ports and doc trees 83221510Snwhitehorn chroot $2 /usr/bin/csup /docports-supfile 84219788Snwhitehornfi 85219610Snwhitehorn 86219788Snwhitehornif [ -d $2/usr/doc ]; then 87219788Snwhitehorn cp /etc/resolv.conf $2/etc/resolv.conf 88219788Snwhitehorn 89223897Snwhitehorn # Build ports to build release documentation 90221510Snwhitehorn 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)' 91219508Snwhitehornfi 92219610Snwhitehorn 93221510Snwhitehornchroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel 94221510Snwhitehornchroot $2 make -C /usr/src/release release 95221510Snwhitehornchroot $2 make -C /usr/src/release install DESTDIR=/R 96219508Snwhitehorn 97227536Snwhitehorn: ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`} 98227536Snwhitehorn 99227536Snwhitehorncd $2/R 100227536Snwhitehornfor i in release.iso bootonly.iso memstick; do 101227536Snwhitehorn mv $i $RELSTRING-$i 102227536Snwhitehorndone 103227536Snwhitehornsha256 $RELSTRING-* > CHECKSUM.SHA256 104227536Snwhitehornmd5 $RELSTRING-* > CHECKSUM.MD5 105227536Snwhitehorn 106