Add sanity checks for live-image and install-image targets

(which require mtree spec files built with MKUNPRIVED=yes)
to avoid unexpected makefs(8) error during image builds:
 - if release op is specified with live-image or install-image
   at the same time, make sure -U is also specified for the image builds
 - before perform live-image and install-image ops check METALOG file
   in DESTDIR to see if the build have been performed with MKUNPRIVED

XXX: Probably toolchain should create consistent spec files in
XXX: DESTDIR/etc/mtree dir regardless of MKUNPRIVED settings.
This commit is contained in:
tsutsui 2012-02-26 20:32:40 +00:00
parent 09274e8647
commit c6db16971c
1 changed files with 21 additions and 9 deletions

View File

@ -1,5 +1,5 @@
#! /usr/bin/env sh
# $NetBSD: build.sh,v 1.253 2012/01/22 03:53:32 tsutsui Exp $
# $NetBSD: build.sh,v 1.254 2012/02/26 20:32:40 tsutsui Exp $
#
# Copyright (c) 2001-2011 The NetBSD Foundation, Inc.
# All rights reserved.
@ -503,6 +503,8 @@ initdefaults()
do_syspkgs=false
do_iso_image=false
do_iso_image_source=false
do_live_image=false
do_install_image=false
do_params=false
do_rump=false
@ -1577,6 +1579,16 @@ validatemakeparams()
fi
;;
esac
# live-image and install-image targets require binary sets
# (actually DESTDIR/etc/mtree/set.* files) built with MKUNPRIVED.
# If release operation is specified with live-image or install-image,
# the release op should be performed with -U for later image ops.
#
if ${do_release} && ( ${do_live_image} || ${do_install_image} ) && \
[ "${MKUNPRIVED}" = "no" ] ; then
bomb "-U must be specified on building release to create images later."
fi
}
@ -1644,7 +1656,7 @@ createmakewrapper()
eval cat <<EOF ${makewrapout}
#! ${HOST_SH}
# Set proper variables to allow easy "make" building of a NetBSD subtree.
# Generated from: \$NetBSD: build.sh,v 1.253 2012/01/22 03:53:32 tsutsui Exp $
# Generated from: \$NetBSD: build.sh,v 1.254 2012/02/26 20:32:40 tsutsui Exp $
# with these arguments: ${_args}
#
@ -1972,13 +1984,13 @@ main()
statusmsg "Successful make ${op}"
;;
live-image)
${runcmd} "${makewrapper}" ${parallel} ${op} ||
bomb "Failed to make ${op}"
statusmsg "Successful make ${op}"
;;
install-image)
live-image|install-image)
# install-image and live-image require mtree spec files
# built with UNPRIVED. Assume UNPRIVED build has been
# performed if METALOG file is created in DESTDIR.
if [ ! -e "${DESTDIR}/METALOG" ] ; then
bomb "The release binaries must have been built with -U to create images."
fi
${runcmd} "${makewrapper}" ${parallel} ${op} ||
bomb "Failed to make ${op}"
statusmsg "Successful make ${op}"