generate-release.sh revision 230107
1238612Szeising#!/bin/sh 2158821Sjoel 3158821Sjoel# generate-release.sh: check out source trees, and build release components with 4158821Sjoel# totally clean, fresh trees. 5158821Sjoel# 6158821Sjoel# Usage: generate-release.sh [-r revision] svn-branch scratch-dir 7158821Sjoel# 8158821Sjoel# Environment variables: 9158821Sjoel# CVSUP_HOST: Host of a cvsup server to obtain the ports and documentation 10158821Sjoel# trees. This or CVSROOT must be set to include ports and documentation. 11158821Sjoel# CVSROOT: CVS root to obtain the ports and documentation trees. This or 12158821Sjoel# CVSUP_HOST must be set to include ports and documentation. 13158821Sjoel# CVS_TAG: CVS tag for ports and documentation (HEAD by default) 14158821Sjoel# SVNROOT: SVN URL to FreeBSD source repository (by default, 15158821Sjoel# svn://svn.freebsd.org/base) 16158821Sjoel# MAKE_FLAGS: optional flags to pass to make (e.g. -j) 17158821Sjoel# RELSTRING: optional base name for media images (e.g. FreeBSD-9.0-RC2-amd64) 18158821Sjoel# 19158821Sjoel# Note: Since this requires a chroot, release cross-builds will not work! 20158821Sjoel# 21158821Sjoel# $FreeBSD: head/release/generate-release.sh 230107 2012-01-14 14:43:22Z glebius $ 22158821Sjoel# 23158821Sjoel 24158821Sjoelusage() 25158821Sjoel{ 26158821Sjoel echo "Usage: $0 [-r revision] svn-branch scratch-dir" 27158821Sjoel exit 1 28158821Sjoel} 29158821Sjoel 30158821Sjoelargs=`getopt r: $*` 31158821Sjoelif [ $? -ne 0 ]; then 32158821Sjoel usage 33158821Sjoelfi 34158821Sjoelset -- $args 35158821SjoelREVISION= 36158821Sjoelwhile true; do 37158821Sjoel case "$1" in 38158821Sjoel -r) 39158821Sjoel REVISION="-r $2" 40158821Sjoel shift; shift 41158821Sjoel ;; 42158821Sjoel --) 43158821Sjoel shift; break 44158821Sjoel ;; 45158821Sjoel esac 46158821Sjoeldone 47158821Sjoel 48158821Sjoelif [ $# -lt 2 ]; then 49158821Sjoel usage 50158821Sjoelfi 51158821Sjoel 52158822Sjoelset -e # Everything must succeed 53158821Sjoel 54158821Sjoelcase $MAKE_FLAGS in 55158821Sjoel *-j*) 56158821Sjoel ;; 57162893Sru *) 58158821Sjoel MAKE_FLAGS="$MAKE_FLAGS -j "$(sysctl -n hw.ncpu) 59158821Sjoel ;; 60158821Sjoelesac 61162893Sru 62162893Srumkdir -p $2/usr/src 63162893Sru 64158821Sjoelsvn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src $REVISION 65158821Sjoelif [ ! -z $CVSUP_HOST ]; then 66158821Sjoel cat > $2/docports-supfile << EOF 67158821Sjoel *default host=$CVSUP_HOST 68158821Sjoel *default base=/var/db 69158821Sjoel *default prefix=/usr 70158821Sjoel *default release=cvs tag=${CVS_TAG:-.} 71162893Sru *default delete use-rel-suffix 72162893Sru *default compress 73158821Sjoel ports-all 74158821Sjoel doc-all 75158821SjoelEOF 76158821Sjoelelif [ ! -z $CVSROOT ]; then 77158821Sjoel cd $2/usr 78158821Sjoel cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} ports 79158821Sjoel cvs -R ${CVSARGS} -d ${CVSROOT} co -P -r ${CVS_TAG:-HEAD} doc 80158821Sjoelfi 81158821Sjoel 82158821Sjoelcd $2/usr/src 83158821Sjoelmake $MAKE_FLAGS buildworld 84158821Sjoelmake installworld distribution DESTDIR=$2 85158821Sjoelmount -t devfs devfs $2/dev 86158821Sjoeltrap "umount $2/dev" EXIT # Clean up devfs mount on exit 87158821Sjoel 88158821Sjoelif [ ! -z $CVSUP_HOST ]; then 89158821Sjoel cp /etc/resolv.conf $2/etc/resolv.conf 90158821Sjoel 91158821Sjoel # Checkout ports and doc trees 92158821Sjoel chroot $2 /usr/bin/csup /docports-supfile 93158821Sjoelfi 94158822Sjoel 95158821Sjoelif [ -d $2/usr/doc ]; then 96162893Sru cp /etc/resolv.conf $2/etc/resolv.conf 97158821Sjoel 98158821Sjoel # Build ports to build release documentation 99158821Sjoel 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)' 100158821Sjoelfi 101162893Sru 102158821Sjoelchroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel 103158821Sjoelchroot $2 make -C /usr/src/release release 104158821Sjoelchroot $2 make -C /usr/src/release install DESTDIR=/R 105158821Sjoel 106158821Sjoel: ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`} 107158821Sjoel 108162893Srucd $2/R 109158821Sjoelfor i in release.iso bootonly.iso memstick; do 110158821Sjoel mv $i $RELSTRING-$i 111158821Sjoeldone 112162893Srusha256 $RELSTRING-* > CHECKSUM.SHA256 113158821Sjoelmd5 $RELSTRING-* > CHECKSUM.MD5 114158821Sjoel 115158821Sjoel