]> CyberLeo.Net >> Repos - FreeBSD/releng/9.1.git/blob - release/generate-release.sh
MFC of 240586 and 240587 to unbreak release building:
[FreeBSD/releng/9.1.git] / release / generate-release.sh
1 #!/bin/sh
2
3 # generate-release.sh: check out source trees, and build release components with
4 #  totally clean, fresh trees.
5 #
6 #  Usage: generate-release.sh [-r revision] [-d docrevision] \
7 #       [-p portsrevision] svn-branch scratch-dir
8 #
9 # Environment variables:
10 #  SVNROOT:    SVN URL to FreeBSD source repository (by default, 
11 #   svn://svn.freebsd.org/base)
12 #  MAKE_FLAGS: optional flags to pass to make (e.g. -j)
13
14 #  Note: Since this requires a chroot, release cross-builds will not work!
15 #
16 # $FreeBSD$
17 #
18
19 usage()
20 {
21         echo "Usage: $0 [-r revision] [-d docrevision] [-p portsrevision] svn-branch scratch-dir"
22         exit 1
23 }
24
25 REVISION=
26 DOCREVISION=
27 PORTSREVISION=
28 while getopts d:r:p: opt; do
29         case $opt in
30         d)
31                 DOCREVISION="-r $OPTARG"
32                 ;;
33         r)
34                 REVISION="-r $OPTARG"
35                 ;;
36         p)
37                 PORTSREVISION="-r $OPTARG"
38                 ;;
39         \?)
40                 usage
41                 ;;
42         esac
43 done
44 shift $(($OPTIND - 1))
45
46 if [ $# -lt 2 ]; then
47         usage
48 fi
49
50 set -e # Everything must succeed
51
52 svn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src
53 svn co ${SVNROOT:-svn://svn.freebsd.org/doc}/head $2/usr/doc $DOCREVISION
54 svn co ${SVNROOT:-svn://svn.freebsd.org/ports}/head $2/usr/ports $PORTSREVISION
55
56 cd $2/usr/src
57 make $MAKE_FLAGS buildworld
58 make installworld distribution DESTDIR=$2
59 mount -t devfs devfs $2/dev
60 trap "umount $2/dev" EXIT # Clean up devfs mount on exit
61
62 if [ -d $2/usr/doc ]; then 
63         cp /etc/resolv.conf $2/etc/resolv.conf
64
65         # Install docproj to build release documentation
66         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)'
67 fi
68
69 chroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel
70 chroot $2 make -C /usr/src/release release
71 chroot $2 make -C /usr/src/release install DESTDIR=/R
72