Module Name: src Committed By: apb Date: Wed Oct 14 19:03:12 UTC 2009
Modified Files: src: build.sh Log Message: Bomb if TOOLDIR, DESTDIR, or RELEASEDIR changes after we have created the top level object directory. This can happen if /etc/mk.conf overrides values passed to build.sh in the environment or on the command line. To generate a diff of this commit: cvs rdiff -u -r1.214 -r1.215 src/build.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/build.sh diff -u src/build.sh:1.214 src/build.sh:1.215 --- src/build.sh:1.214 Sat Oct 3 19:19:59 2009 +++ src/build.sh Wed Oct 14 19:03:12 2009 @@ -1,5 +1,5 @@ #! /usr/bin/env sh -# $NetBSD: build.sh,v 1.214 2009/10/03 19:19:59 apb Exp $ +# $NetBSD: build.sh,v 1.215 2009/10/14 19:03:12 apb Exp $ # # Copyright (c) 2001-2009 The NetBSD Foundation, Inc. # All rights reserved. @@ -1144,23 +1144,38 @@ ${runcmd} cd "${TOP}" fi - # Find TOOLDIR, DESTDIR, RELEASEDIR, and RELEASEMACHINEDIR. + # Find TOOLDIR, DESTDIR, and RELEASEDIR, according to getmakevar, + # and bomb if they have changed from the values we had from the + # command line or environment. + # # This must be done after creating the top-level object directory. # - TOOLDIR=$(getmakevar TOOLDIR) - statusmsg "TOOLDIR path: ${TOOLDIR}" - DESTDIR=$(getmakevar DESTDIR) - RELEASEDIR=$(getmakevar RELEASEDIR) + for var in TOOLDIR DESTDIR RELEASEDIR + do + eval oldval=\"\$${var}\" + newval="$(getmakevar $var)" + if ! $do_expertmode; then + : ${__SRC_TOP_OBJ__:=$(getmakevar __SRC_TOP_OBJ__)} + case "$var" in + DESTDIR) + : ${newval:=${_SRC_TOP_OBJ_}/destdir.${MACHINE}} + ;; + RELEASEDIR) + : ${newval:=${_SRC_TOP_OBJ_}/releasedir} + ;; + esac + fi + if [ -n "$oldval" ] && [ "$oldval" != "$newval" ]; then + bomb "Value of ${var} has changed" \ + "(was \"${oldval}\", now \"${newval}\")" + fi + eval ${var}=\"\${newval}\" + eval export ${var} + statusmsg "${var} path: ${newval}" + done + + # RELEASEMACHINEDIR is just a subdir name, e.g. "i386". RELEASEMACHINEDIR=$(getmakevar RELEASEMACHINEDIR) - if ! $do_expertmode; then - _SRC_TOP_OBJ_=$(getmakevar _SRC_TOP_OBJ_) - : ${DESTDIR:=${_SRC_TOP_OBJ_}/destdir.${MACHINE}} - : ${RELEASEDIR:=${_SRC_TOP_OBJ_}/releasedir} - makeenv="${makeenv} DESTDIR RELEASEDIR" - fi - export TOOLDIR DESTDIR RELEASEDIR - statusmsg "DESTDIR path: ${DESTDIR}" - statusmsg "RELEASEDIR path: ${RELEASEDIR}" # Check validity of TOOLDIR and DESTDIR. # @@ -1298,7 +1313,7 @@ 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.214 2009/10/03 19:19:59 apb Exp $ +# Generated from: \$NetBSD: build.sh,v 1.215 2009/10/14 19:03:12 apb Exp $ # with these arguments: ${_args} #