File: [local] / openbsd / update_openbsd / release.sh (download)
Revision 1.30, Thu Dec 3 17:28:37 2009 UTC (14 years, 6 months ago) by andrew
Branch: MAIN
Changes since 1.29: +88 -27 lines
exit if stuff fails, don't go on. It likely won't work anyhow
|
#!/bin/sh
# $RedRiver: release.sh,v 1.29 2009/04/25 00:14:12 andrew Exp $
#
# Copyright (c) 2002, 2008 Steven Roberts <sroberts@fenderq.com>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
local _origtag=${TAG}
TAG=`uname -sr | tr '[:lower:] .' '[:upper:]_'`
KERNEL="GENERIC"
ARCH=`machine`
DEST="/home/destdir"
RELEASE="/home/releasedir"
XSRCDIR="/usr/xenocara"
PORTSPATH="/usr/ports"
if [ -e /etc/release.conf ]; then
. /etc/release.conf
fi
export CVSROOT
if [ X"" != X"${_origtag}" ]; then
TAG=$_origtag
fi
# See http://www.openbsd.org/anoncvs.html for instructions on fetching the
# sources for the first time.
empty_dir() {
[ X"" == X"$1" ] && exit
cd $1 || exit
local _old=`${SUDO} mktemp -d .old.XXXXXXX`
${SUDO} mv -f * .* $_old 2>/dev/null
${SUDO} rm -rf $_old
sync
}
update_sources() {
echo "---------- Update sources ----------"
local _d
for _d in /usr/src "${XSRCDIR}" "${PORTSPATH}"; do
if [ -d $_d ]; then
echo [$_d] cvs update -r$TAG -Pd
cd $_d && cvs update -r$TAG -Pd || exit 255
fi
done
}
build_kernel() {
echo "---------- Build and install a new kernel ----------"
local _status=0
unset DESTDIR RELEASEDIR
cd /usr/src/sys/arch/$ARCH/conf
config $KERNEL
cd ../compile/$KERNEL
make clean depend && make
_status=$?
if [ $_status == 0 ]; then
make install
_status=$?
fi
if [ $_status != 0 ]; then
echo Kernel Build Failed
fi
exit $_status
}
build_system() {
echo "---------- Build a new system ----------"
local _status=0
unset DESTDIR RELEASEDIR
empty_dir /usr/obj &
cd /usr/src && nice make obj
_status=$?
if [ $_status == 0 ]; then
cd /usr/src/etc && env DESTDIR=/ $SUDO make distrib-dirs
_status=$?
fi
if [ $_status == 0 ]; then
cd /usr/src && nice make SUDO="${SUDO}" build
fi
if [ $_status != 0 ]; then
echo System Build Failed
fi
echo Update /etc, /var, and /dev/MAKEDEV, either by hand or using sysmerge\(8\).
exit $_status
}
make_system_release() {
echo "---------- Make and validate the system release ----------"
local _status=0
export DESTDIR=$DEST; export RELEASEDIR=$RELEASE
if [ X"$DESTDIR" == X"" ]; then
echo PLEASE SET \$DEST! >2&
exit
fi
mkdir -p $DESTDIR $RELEASEDIR
empty_dir $DESTDIR &
cd /usr/src/etc && ${SUDO} nice make release
_status=$?
if [ $_status == 0 ]; then
cd /usr/src/distrib/sets && ${SUDO} sh checkflist
_status=$?
fi
unset DESTDIR RELEASEDIR
if [ $_status != 0 ]; then
echo System Release Failed
fi
exit $_status
}
build_xenocara() {
echo "---------- Build and install xenocara ----------"
local _status=0
unset DESTDIR RELEASEDIR
empty_dir /usr/xobj &
cd $XSRCDIR
make bootstrap
_status=$?
if [ $_status == 0 ]; then
make obj
_status=$?
fi
if [ $_status == 0 ]; then
make build
_status=$?
fi
if [ $_status != 0 ]; then
echo Xenocara Build Failed
fi
exit $_status
}
make_xenocara_release() {
echo "---------- Make and validate the xenocara release ----------"
local _status=0
export DESTDIR=$DEST;export RELEASEDIR=$RELEASE
if [ X"$DESTDIR" == X"" ]; then
echo PLEASE SET \$DEST! >2&
exit
fi
mkdir -p $DESTDIR $RELEASEDIR
empty_dir $DESTDIR &
cd $XSRCDIR
nice make release
_status=$?
unset DESTDIR RELEASEDIR
if [ $_status != 0 ]; then
echo Xenocara Release Failed
fi
exit $_status
}
usage() {
echo " Usage: $0 <options>"
echo
echo "Options:"
echo
echo " update - Update sources"
echo " kernel - Build and install a new kernel"
echo " system - Build a new system"
echo " system-release - Make and validate the system release"
echo " xenocara - Build and install xenocara"
echo " xenocara-release - Make and validate the xenocara release"
echo " full-release - xenocara, xenocara-release, system, system-release"
echo
}
if [ X"" == X"${SUDO}" -a `whoami` != "root" ]; then
echo "You must be root or set SUDO to build a release."
exit 1
fi
START=`date`
echo
echo ".: release.sh - building an OpenBSD release :."
echo "----------------------------------------------"
echo
echo " Tag: $TAG"
echo " Kernel: $KERNEL-$ARCH"
echo " Dest: $DEST"
echo "Release: $RELEASE"
if [ X"$CVSROOT" != X"" ]; then
echo " Root: $CVSROOT"
fi
echo
if [ $# = 0 ]; then usage; exit 1; fi
for i in $*
do
case $i in
update)
update_sources || exit 10
;;
kernel)
build_kernel || exit 20
;;
system)
build_system || exit 30
;;
system-release)
make_system_release || exit 35
;;
xenocara)
build_xenocara || exit 40
;;
xenocara-release)
make_xenocara_release || exit 45
;;
full-release)
build_xenocara || exit 51
make_xenocara_release || exit 52
build_system || exit 53
make_system_release || exit 54
;;
*)
echo "---------- Abort! Abort! ----------"
echo "Invalid option encountered: $i"
echo "Exiting......."
echo
exit 1
;;
esac
done
echo
echo " Start Time : $START"
echo "Finish Time : `date`"
echo