generate-release.sh revision 240586
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 240586 2012-09-17 02:23:03Z gjb $ 22219508Snwhitehorn# 23219508Snwhitehorn 24230106Sglebiususage() 25230106Sglebius{ 26240586Sgjb echo "Usage: $0 [-r revision] [-d docrevision] [-p portsrevision] svn-branch scratch-dir" 27230106Sglebius exit 1 28230106Sglebius} 29230106Sglebius 30230106SglebiusREVISION= 31240586SgjbDOCREVISION= 32240586SgjbPORTSREVISION= 33240586Sgjbwhile getopts d:r:p: opt; do 34230128Sglebius case $opt in 35240586Sgjb d) 36240586Sgjb DOCREVISION="-r $OPTARG" 37240586Sgjb ;; 38230128Sglebius r) 39230128Sglebius REVISION="-r $OPTARG" 40230106Sglebius ;; 41240586Sgjb p) 42240586Sgjb PORTSREVISION="-r $OPTARG" 43240586Sgjb ;; 44230128Sglebius \?) 45230128Sglebius usage 46230106Sglebius ;; 47230106Sglebius esac 48230106Sglebiusdone 49230128Sglebiusshift $(($OPTIND - 1)) 50230106Sglebius 51230106Sglebiusif [ $# -lt 2 ]; then 52230106Sglebius usage 53230106Sglebiusfi 54230106Sglebius 55221510Snwhitehornset -e # Everything must succeed 56221510Snwhitehorn 57230107Sglebiuscase $MAKE_FLAGS in 58230107Sglebius *-j*) 59230107Sglebius ;; 60230107Sglebius *) 61230107Sglebius MAKE_FLAGS="$MAKE_FLAGS -j "$(sysctl -n hw.ncpu) 62230107Sglebius ;; 63230107Sglebiusesac 64230107Sglebius 65230107Sglebiusmkdir -p $2/usr/src 66230107Sglebius 67230106Sglebiussvn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src $REVISION 68240586Sgjbsvn co ${SVNROOT:-svn://svn.freebsd.org/doc}/head $2/usr/doc $DOCREVISION 69240586Sgjbsvn co ${SVNROOT:-svn://svn.freebsd.org/ports}/head $2/usr/ports $PORTSREVISION 70219508Snwhitehorn 71219508Snwhitehorncd $2/usr/src 72221510Snwhitehornmake $MAKE_FLAGS buildworld 73221510Snwhitehornmake installworld distribution DESTDIR=$2 74219508Snwhitehornmount -t devfs devfs $2/dev 75221510Snwhitehorntrap "umount $2/dev" EXIT # Clean up devfs mount on exit 76219508Snwhitehorn 77219788Snwhitehornif [ -d $2/usr/doc ]; then 78219788Snwhitehorn cp /etc/resolv.conf $2/etc/resolv.conf 79219788Snwhitehorn 80240586Sgjb # Install docproj to build release documentation 81240586Sgjb chroot $2 /bin/sh -c '(export ASSUME_ALWAYS_YES=1 && /usr/sbin/pkg install -y docproj) || (cd /usr/ports/textproc/docproj && make install clean BATCH=yes WITHOUT_X11=yes JADETEX=no WITHOUT_PYTHON=yes)' 82219508Snwhitehornfi 83219610Snwhitehorn 84221510Snwhitehornchroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel 85221510Snwhitehornchroot $2 make -C /usr/src/release release 86221510Snwhitehornchroot $2 make -C /usr/src/release install DESTDIR=/R 87219508Snwhitehorn 88227536Snwhitehorn: ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`} 89227536Snwhitehorn 90227536Snwhitehorncd $2/R 91227536Snwhitehornfor i in release.iso bootonly.iso memstick; do 92227536Snwhitehorn mv $i $RELSTRING-$i 93227536Snwhitehorndone 94227536Snwhitehornsha256 $RELSTRING-* > CHECKSUM.SHA256 95227536Snwhitehornmd5 $RELSTRING-* > CHECKSUM.MD5 96227536Snwhitehorn 97