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