version 1.31, 2010/02/10 20:57:07 |
version 1.38, 2017/02/16 07:08:49 |
|
|
#!/bin/sh |
#!/bin/sh |
# $AFresh1: release.sh,v 1.30 2009/12/03 17:28:37 andrew Exp $ |
# $AFresh1: release.sh,v 1.37 2015/11/27 22:36:12 andrew Exp $ |
# |
# |
# Copyright (c) 2002, 2008 Steven Roberts <sroberts@fenderq.com> |
# Copyright (c) 2002, 2008 Steven Roberts <sroberts@fenderq.com> |
# |
# |
|
|
TAG=`uname -sr | tr '[:lower:] .' '[:upper:]_'` |
TAG=`uname -sr | tr '[:lower:] .' '[:upper:]_'` |
KERNEL="GENERIC" |
KERNEL="GENERIC" |
ARCH=`machine` |
ARCH=`machine` |
DEST="/home/destdir" |
DEST="/usr/dest" |
RELEASE="/home/releasedir" |
RELEASE="/home/releasedir" |
XSRCDIR="/usr/xenocara" |
XSRCDIR="/usr/xenocara" |
PORTSPATH="/usr/ports" |
PORTSPATH="/usr/ports" |
|
BUILDUSER=build |
|
|
|
if [ -e /etc/mk.conf ]; then |
|
. /etc/mk.conf |
|
fi |
if [ -e /etc/release.conf ]; then |
if [ -e /etc/release.conf ]; then |
. /etc/release.conf |
. /etc/release.conf |
fi |
fi |
|
|
TAG=$_origtag |
TAG=$_origtag |
fi |
fi |
|
|
|
if [ X"$DEST" = X"" ]; then |
|
echo PLEASE SET \$DEST! >&2 |
|
exit 1 |
|
fi |
|
if [ X"$RELEASE" = X"" ]; then |
|
echo PLEASE SET \$RELEASE! >&2 |
|
exit 1 |
|
fi |
|
|
# See http://www.openbsd.org/anoncvs.html for instructions on fetching the |
# See http://www.openbsd.org/anoncvs.html for instructions on fetching the |
# sources for the first time. |
# sources for the first time. |
|
|
empty_dir() { |
empty_dir() { |
[ X"" == X"$1" ] && exit |
[ X"" = X"$1" ] && exit |
cd $1 || exit |
cd $1 || exit |
|
|
local _old=`${SUDO} mktemp -d .old.XXXXXXX` |
local _old=`mktemp -d .old.XXXXXXX` |
${SUDO} mv -f * .* $_old 2>/dev/null |
mv -f * .* $_old 2>/dev/null |
${SUDO} rm -rf $_old |
rm -rf $_old |
|
|
sync |
sync |
} |
} |
|
|
echo "---------- Update sources ----------" |
echo "---------- Update sources ----------" |
local _d |
local _d |
for _d in /usr/src "${XSRCDIR}" "${PORTSPATH}"; do |
for _d in /usr/src "${XSRCDIR}" "${PORTSPATH}"; do |
if [ -d $_d ]; then |
if [ -d $_d -a -e $_d/CVS ]; then |
echo [$_d] cvs update -r$TAG -Pd |
R="-r$TAG" |
cd $_d && cvs update -r$TAG -Pd || exit 255 |
[ "$TAG" = "HEAD" ] && R="-A" |
|
echo [$_d] cvs update $R -Pd |
|
cd $_d && cvs update $R -Pd || exit 255 |
fi |
fi |
done |
done |
} |
} |
|
|
echo "---------- Build and install a new kernel ----------" |
echo "---------- Build and install a new kernel ----------" |
local _status=0 |
local _status=0 |
unset DESTDIR RELEASEDIR |
unset DESTDIR RELEASEDIR |
cd /usr/src/sys/arch/$ARCH/conf |
|
config $KERNEL |
cd /usr/src/sys/arch/$ARCH/compile/$KERNEL |
cd ../compile/$KERNEL |
|
make clean depend && make |
|
_status=$? |
_status=$? |
if [ $_status == 0 ]; then |
|
make install |
if [ $_status -eq 0 ]; then |
|
make obj && make config && make && make install |
_status=$? |
_status=$? |
fi |
fi |
if [ $_status != 0 ]; then |
|
|
if [ $_status -ne 0 ]; then |
echo Kernel Build Failed |
echo Kernel Build Failed |
|
exit $_status |
fi |
fi |
exit $_status |
|
} |
} |
|
|
build_system() { |
build_system() { |
echo "---------- Build a new system ----------" |
echo "---------- Build a new system ----------" |
local _status=0 |
local _status=0 |
unset DESTDIR RELEASEDIR |
unset DESTDIR RELEASEDIR |
|
local DESTDIR RELEASEDIR |
|
|
|
mkdir -p /usr/obj |
|
chown $BUILDUSER:wheel /usr/obj |
|
chmod 755 /usr/obj |
empty_dir /usr/obj & |
empty_dir /usr/obj & |
cd /usr/src && nice make obj |
|
|
cd /usr/src |
_status=$? |
_status=$? |
if [ $_status == 0 ]; then |
|
cd /usr/src/etc && env DESTDIR=/ $SUDO make distrib-dirs |
if [ $_status -eq 0 ]; then |
|
nice make $BUILD_ARGS obj && nice make $BUILD_ARGS build |
_status=$? |
_status=$? |
fi |
fi |
if [ $_status == 0 ]; then |
|
cd /usr/src && nice make SUDO="${SUDO}" build |
if [ $_status -ne 0 ]; then |
fi |
|
if [ $_status != 0 ]; then |
|
echo System Build Failed |
echo System Build Failed |
|
exit $_status |
fi |
fi |
|
|
echo Update /etc, /var, and /dev/MAKEDEV, either by hand or using sysmerge\(8\). |
echo Update /etc, /var, and /dev/MAKEDEV, either by hand or using sysmerge\(8\). |
exit $_status |
|
} |
} |
|
|
make_system_release() { |
make_system_release() { |
echo "---------- Make and validate the system release ----------" |
echo "---------- Make and validate the system release ----------" |
|
|
local _status=0 |
local _status=0 |
export DESTDIR=$DEST; export RELEASEDIR=$RELEASE |
local DESTDIR RELEASEDIR |
if [ X"$DESTDIR" == X"" ]; then |
|
echo PLEASE SET \$DEST! >2& |
export DESTDIR=$DEST/base; export RELEASEDIR=$RELEASE |
exit |
|
fi |
|
mkdir -p $DESTDIR $RELEASEDIR |
mkdir -p $DESTDIR $RELEASEDIR |
empty_dir $DESTDIR & |
empty_dir $DESTDIR & |
cd /usr/src/etc && ${SUDO} nice make release |
chown -R $BUILDUSER:wheel $DESTDIR $RELEASEDIR |
_status=$? |
chmod -R 700 $DESTDIR $RELEASEDIR |
if [ $_status == 0 ]; then |
|
cd /usr/src/distrib/sets && ${SUDO} sh checkflist |
if [ $_status -eq 0 ]; then |
|
cd /usr/src/etc && nice make release |
_status=$? |
_status=$? |
fi |
fi |
|
|
|
if [ $_status -eq 0 ]; then |
|
cd /usr/src/distrib/sets && sh checkflist |
|
_status=$? |
|
fi |
|
|
unset DESTDIR RELEASEDIR |
unset DESTDIR RELEASEDIR |
if [ $_status != 0 ]; then |
if [ $_status -ne 0 ]; then |
echo System Release Failed |
echo System Release Failed |
|
exit $_status |
fi |
fi |
exit $_status |
|
} |
} |
|
|
build_xenocara() { |
build_xenocara() { |
echo "---------- Build and install xenocara ----------" |
echo "---------- Build and install xenocara ----------" |
local _status=0 |
local _status=0 |
|
local DESTDIR RELEASEDIR |
unset DESTDIR RELEASEDIR |
unset DESTDIR RELEASEDIR |
|
|
|
mkdir -p /usr/xobj |
|
chown $BUILDUSER:wheel /usr/xobj |
|
chmod 755 /usr/xobj |
empty_dir /usr/xobj & |
empty_dir /usr/xobj & |
|
|
cd $XSRCDIR |
cd $XSRCDIR |
make bootstrap |
|
_status=$? |
_status=$? |
if [ $_status == 0 ]; then |
|
make obj |
if [ $_status -eq 0 ]; then |
|
make $BUILD_ARGS bootstrap |
_status=$? |
_status=$? |
fi |
fi |
if [ $_status == 0 ]; then |
|
make build |
if [ $_status -eq 0 ]; then |
|
make $BUILD_ARGS obj |
_status=$? |
_status=$? |
fi |
fi |
if [ $_status != 0 ]; then |
|
|
if [ $_status -eq 0 ]; then |
|
make $BUILD_ARGS build |
|
_status=$? |
|
fi |
|
|
|
if [ $_status -ne 0 ]; then |
echo Xenocara Build Failed |
echo Xenocara Build Failed |
|
exit $_status |
fi |
fi |
exit $_status |
|
} |
} |
|
|
make_xenocara_release() { |
make_xenocara_release() { |
echo "---------- Make and validate the xenocara release ----------" |
echo "---------- Make and validate the xenocara release ----------" |
local _status=0 |
local _status=0 |
export DESTDIR=$DEST;export RELEASEDIR=$RELEASE |
local DESTDIR RELEASEDIR |
if [ X"$DESTDIR" == X"" ]; then |
|
echo PLEASE SET \$DEST! >2& |
export DESTDIR=$DEST/xbase; export RELEASEDIR=$RELEASE |
exit |
|
fi |
|
mkdir -p $DESTDIR $RELEASEDIR |
mkdir -p $DESTDIR $RELEASEDIR |
empty_dir $DESTDIR & |
empty_dir $DESTDIR & |
cd $XSRCDIR |
chown -R $BUILDUSER:wheel $DESTDIR $RELEASEDIR |
nice make release |
chmod -R 755 $DESTDIR $RELEASEDIR |
_status=$? |
|
|
if [ $_status -eq 0 ]; then |
|
cd $XSRCDIR && nice make release |
|
_status=$? |
|
fi |
|
|
unset DESTDIR RELEASEDIR |
unset DESTDIR RELEASEDIR |
if [ $_status != 0 ]; then |
if [ $_status -ne 0 ]; then |
echo Xenocara Release Failed |
echo Xenocara Release Failed |
|
exit $_status |
fi |
fi |
exit $_status |
|
} |
} |
|
|
usage() { |
usage() { |
|
|
echo " system-release - Make and validate the system release" |
echo " system-release - Make and validate the system release" |
echo " xenocara - Build and install xenocara" |
echo " xenocara - Build and install xenocara" |
echo " xenocara-release - Make and validate the xenocara release" |
echo " xenocara-release - Make and validate the xenocara release" |
echo " full-release - xenocara, xenocara-release, system, system-release" |
echo " full - xenocara, xenocara-release, system, system-release" |
echo |
echo |
|
if [ `whoami` != "root" ]; then |
|
echo "You must be root to build a release." |
|
fi |
} |
} |
|
|
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` |
START=`date` |
echo |
echo |
echo ".: release.sh - building an OpenBSD release :." |
echo ".: release.sh - building an OpenBSD release :." |
|
|
|
|
if [ $# = 0 ]; then usage; exit 1; fi |
if [ $# = 0 ]; then usage; exit 1; fi |
|
|
|
if [ `whoami` != "root" ]; then |
|
echo "You must be root to build a release." |
|
exit 1 |
|
fi |
|
|
for i in $* |
for i in $* |
do |
do |
case $i in |
case $i in |
update) |
update) |
update_sources || exit 10 |
update_sources |
;; |
;; |
kernel) |
kernel) |
build_kernel || exit 20 |
build_kernel |
;; |
;; |
system) |
system) |
build_system || exit 30 |
build_system |
;; |
;; |
system-release) |
system-release) |
make_system_release || exit 35 |
make_system_release |
;; |
;; |
xenocara) |
xenocara) |
build_xenocara || exit 40 |
build_xenocara |
;; |
;; |
xenocara-release) |
xenocara-release) |
make_xenocara_release || exit 45 |
make_xenocara_release |
;; |
;; |
full-release) |
full) |
build_xenocara || exit 51 |
build_xenocara |
make_xenocara_release || exit 52 |
make_xenocara_release |
build_system || exit 53 |
build_system |
make_system_release || exit 54 |
make_system_release |
;; |
;; |
*) |
*) |
echo "---------- Abort! Abort! ----------" |
echo "---------- Abort! Abort! ----------" |