generate-release.sh revision 240587
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# RELSTRING: optional base name for media images (e.g. FreeBSD-9.0-RC2-amd64) 14# 15# Note: Since this requires a chroot, release cross-builds will not work! 16# 17# $FreeBSD: head/release/generate-release.sh 240587 2012-09-17 02:35:00Z gjb $ 18# 19 20usage() 21{ 22 echo "Usage: $0 [-r revision] [-d docrevision] [-p portsrevision] svn-branch scratch-dir" 23 exit 1 24} 25 26REVISION= 27DOCREVISION= 28PORTSREVISION= 29while getopts d:r:p: opt; do 30 case $opt in 31 d) 32 DOCREVISION="-r $OPTARG" 33 ;; 34 r) 35 REVISION="-r $OPTARG" 36 ;; 37 p) 38 PORTSREVISION="-r $OPTARG" 39 ;; 40 \?) 41 usage 42 ;; 43 esac 44done 45shift $(($OPTIND - 1)) 46 47if [ $# -lt 2 ]; then 48 usage 49fi 50 51set -e # Everything must succeed 52 53case $MAKE_FLAGS in 54 *-j*) 55 ;; 56 *) 57 MAKE_FLAGS="$MAKE_FLAGS -j "$(sysctl -n hw.ncpu) 58 ;; 59esac 60 61mkdir -p $2/usr/src 62 63svn co ${SVNROOT:-svn://svn.freebsd.org/base}/$1 $2/usr/src $REVISION 64svn co ${SVNROOT:-svn://svn.freebsd.org/doc}/head $2/usr/doc $DOCREVISION 65svn co ${SVNROOT:-svn://svn.freebsd.org/ports}/head $2/usr/ports $PORTSREVISION 66 67cd $2/usr/src 68make $MAKE_FLAGS buildworld 69make installworld distribution DESTDIR=$2 70mount -t devfs devfs $2/dev 71trap "umount $2/dev" EXIT # Clean up devfs mount on exit 72 73if [ -d $2/usr/doc ]; then 74 cp /etc/resolv.conf $2/etc/resolv.conf 75 76 # Install docproj to build release documentation 77 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)' 78fi 79 80chroot $2 make -C /usr/src $MAKE_FLAGS buildworld buildkernel 81chroot $2 make -C /usr/src/release release 82chroot $2 make -C /usr/src/release install DESTDIR=/R 83 84: ${RELSTRING=`chroot $2 uname -s`-`chroot $2 uname -r`-`chroot $2 uname -p`} 85 86cd $2/R 87for i in release.iso bootonly.iso memstick; do 88 mv $i $RELSTRING-$i 89done 90sha256 $RELSTRING-* > CHECKSUM.SHA256 91md5 $RELSTRING-* > CHECKSUM.MD5 92 93