generate-release.sh revision 230107
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 230107 2012-01-14 14:43:22Z 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 52221510Snwhitehornset -e # Everything must succeed 53221510Snwhitehorn 54230107Sglebiuscase $MAKE_FLAGS in 55230107Sglebius *-j*) 56230107Sglebius ;; 57230107Sglebius *) 58230107Sglebius MAKE_FLAGS="$MAKE_FLAGS -j "$(sysctl -n hw.ncpu) 59230107Sglebius ;; 60230107Sglebiusesac 61230107Sglebius 62230107Sglebiusmkdir -p $2/usr/src 63230107Sglebius 64230106Sglebiussvn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src $REVISION 65219508Snwhitehornif [ ! -z $CVSUP_HOST ]; then 66219610Snwhitehorn cat > $2/docports-supfile << EOF 67219508Snwhitehorn *default host=$CVSUP_HOST 68219508Snwhitehorn *default base=/var/db 69219508Snwhitehorn *default prefix=/usr 70219788Snwhitehorn *default release=cvs tag=${CVS_TAG:-.} 71219508Snwhitehorn *default delete use-rel-suffix 72219508Snwhitehorn *default compress 73219508Snwhitehorn ports-all 74219610Snwhitehorn doc-all 75219508SnwhitehornEOF 76219788Snwhitehornelif [ ! -z $CVSROOT ]; then 77219788Snwhitehorn cd $2/usr 78221510Snwhitehorn cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} ports 79221510Snwhitehorn cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} doc 80219508Snwhitehornfi 81219508Snwhitehorn 82219508Snwhitehorncd $2/usr/src 83221510Snwhitehornmake $MAKE_FLAGS buildworld 84221510Snwhitehornmake installworld distribution DESTDIR=$2 85219508Snwhitehornmount -t devfs devfs $2/dev 86221510Snwhitehorntrap "umount $2/dev" EXIT # Clean up devfs mount on exit 87219508Snwhitehorn 88219508Snwhitehornif [ ! -z $CVSUP_HOST ]; then 89219508Snwhitehorn cp /etc/resolv.conf $2/etc/resolv.conf 90219610Snwhitehorn 91219610Snwhitehorn # Checkout ports and doc trees 92221510Snwhitehorn chroot $2 /usr/bin/csup /docports-supfile 93219788Snwhitehornfi 94219610Snwhitehorn 95219788Snwhitehornif [ -d $2/usr/doc ]; then 96219788Snwhitehorn cp /etc/resolv.conf $2/etc/resolv.conf 97219788Snwhitehorn 98223897Snwhitehorn # Build ports to build release documentation 99221510Snwhitehorn 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)' 100219508Snwhitehornfi 101219610Snwhitehorn 102221510Snwhitehornchroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel 103221510Snwhitehornchroot $2 make -C /usr/src/release release 104221510Snwhitehornchroot $2 make -C /usr/src/release install DESTDIR=/R 105219508Snwhitehorn 106227536Snwhitehorn: ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`} 107227536Snwhitehorn 108227536Snwhitehorncd $2/R 109227536Snwhitehornfor i in release.iso bootonly.iso memstick; do 110227536Snwhitehorn mv $i $RELSTRING-$i 111227536Snwhitehorndone 112227536Snwhitehornsha256 $RELSTRING-* > CHECKSUM.SHA256 113227536Snwhitehornmd5 $RELSTRING-* > CHECKSUM.MD5 114227536Snwhitehorn 115