Add build.sh -Z var, to unset a variable and ensure it's unset in makewrapper.

For -M MAKEOBJDIRPREFIX, unset MAKEOBJDIR.
For -O MAKEOBJDIR, unset MAKEOBJDIRPREFIX.
This commit is contained in:
lukem 2003-07-29 10:07:15 +00:00
parent 82cba16bce
commit 13b0ffec63
3 changed files with 70 additions and 18 deletions

View File

@ -541,7 +541,7 @@ BUILDING
If you see build failures with -j, please save complete build
logs so the failures can be analyzed.
-M obj Set MAKEOBJDIRPREFIX to obj.
-M obj Set MAKEOBJDIRPREFIX to obj. Unsets MAKEOBJDIR.
-m mach Set the value of MACHINE to mach. This will also override any
value of MACHINE_ARCH in the process environment with a value
@ -572,7 +572,8 @@ BUILDING
-O obj Create an appropriate transform macro for MAKEOBJDIR that will
place the built object files under obj. For instance, a set-
ting of /usr/obj will place build-time files under
/usr/obj/bin, /usr/obj/lib, and so forth.
/usr/obj/bin, /usr/obj/lib, /usr/obj/usr.bin, and so forth.
Unsets MAKEOBJDIRPREFIX.
-o Set the value of MKOBJDIRS to ``no''. Otherwise, it will be
automatically set to ``yes'' (which is opposite to the default
@ -593,7 +594,8 @@ BUILDING
-u Set MKUPDATE=yes.
-V var=[value]
Set the variable var to value (which is optional).
Set the environment variable var to an optional value. This is
propagated to the nbmake wrapper.
-w wrapper
Create the nbmake wrapper script (see below) in a custom loca-
@ -601,6 +603,9 @@ BUILDING
place the wrapper in PATH automatically. Note that wrapper is
the full name of the file, not just a directory name.
-Z var Unset ("zap") the environment variable var. This is propagated
to the nbmake wrapper.
The "nbmake-MACHINE" wrapper script
If using the build.sh script to build NetBSD, a nbmake-MACHINE script
will be created in TOOLDIR/bin upon the first build to assist in building
@ -609,6 +614,9 @@ BUILDING
nbmake-MACHINE can be invoked in lieu of make(1), and will instead call
the up-to-date version of ``nbmake'' installed into TOOLDIR/bin with sev-
eral key variables pre-set, including MACHINE, MACHINE_ARCH, and TOOLDIR.
build.sh will also set variables specified with -V, and unset variables
specified with -Z.
This script can be symlinked into a directory listed in PATH, or called
with an absolute path.
@ -655,4 +663,4 @@ HISTORY
BUGS
A few platforms are not yet using this build system.
NetBSD July 18, 2003 NetBSD
NetBSD July 29, 2003 NetBSD

View File

@ -1,5 +1,5 @@
#! /usr/bin/env sh
# $NetBSD: build.sh,v 1.110 2003/07/28 12:33:42 lukem Exp $
# $NetBSD: build.sh,v 1.111 2003/07/29 10:07:15 lukem Exp $
#
# Copyright (c) 2001-2003 The NetBSD Foundation, Inc.
# All rights reserved.
@ -316,6 +316,12 @@ setmakeenv()
makeenv="${makeenv} $1"
}
unsetmakeenv()
{
eval "unset $1"
makeenv="${makeenv} $1"
}
resolvepath()
{
case "${OPTARG}" in
@ -337,7 +343,7 @@ usage()
Usage: ${progname} [-EnorUu] [-a arch] [-B buildid] [-D dest] [-j njob] [-M obj]
[-m mach] [-O obj] [-R release] [-T tools] [-V var=[value]]
[-w wrapper] operation [...]
[-w wrapper] [-Z var] operation [...]
Build operations (all imply "obj" and "tools"):
build Run "make build"
@ -366,9 +372,11 @@ Usage: ${progname} [-EnorUu] [-a arch] [-B buildid] [-D dest] [-j njob] [-M obj]
Should not be used without expert knowledge of the build system
-j njob Run up to njob jobs in parallel; see make(1)
-M obj Set obj root directory to obj (sets MAKEOBJDIRPREFIX)
Unsets MAKEOBJDIR.
-m mach Set MACHINE to mach (not required if NetBSD native)
-n Show commands that would be executed, but do not execute them
-O obj Set obj root directory to obj (sets a MAKEOBJDIR pattern)
-O obj Set obj root directory to obj (sets a MAKEOBJDIR pattern).
Unsets MAKEOBJDIRPREFIX.
-o Set MKOBJDIRS=no (do not create objdirs at start of build)
-R release Set RELEASEDIR to release. (Default: releasedir)
-r Remove contents of TOOLDIR and DESTDIR before building
@ -380,6 +388,7 @@ Usage: ${progname} [-EnorUu] [-a arch] [-B buildid] [-D dest] [-j njob] [-M obj]
-V v=[val] Set variable \`v' to \`val'
-w wrapper Create ${toolprefix}make script as wrapper
(Default: \${TOOLDIR}/bin/${toolprefix}make-\${MACHINE})
-Z v Unset ("zap") variable \`v'
_usage_
exit 1
@ -387,7 +396,7 @@ _usage_
parseoptions()
{
opts='a:B:bD:dEhi:j:k:M:m:nO:oR:rT:tUuV:w:'
opts='a:B:bD:dEhi:j:k:M:m:nO:oR:rT:tUuV:w:Z:'
opt_a=no
if type getopts >/dev/null 2>&1; then
@ -460,6 +469,7 @@ parseoptions()
-M)
eval ${optargcmd}; resolvepath
makeobjdir="${OPTARG}"
unsetmakeenv MAKEOBJDIR
setmakeenv MAKEOBJDIRPREFIX "${OPTARG}"
;;
@ -477,6 +487,7 @@ parseoptions()
-O)
eval ${optargcmd}; resolvepath
makeobjdir="${OPTARG}"
unsetmakeenv MAKEOBJDIRPREFIX
setmakeenv MAKEOBJDIR "\${.CURDIR:C,^$TOP,$OPTARG,}"
;;
@ -530,6 +541,12 @@ parseoptions()
makewrapper="${OPTARG}"
;;
-Z)
eval ${optargcmd}
# XXX: consider restricting which variables can be unset?
unsetmakeenv "${OPTARG}"
;;
--)
break
;;
@ -784,12 +801,16 @@ createmakewrapper()
eval cat <<EOF ${makewrapout}
#! /bin/sh
# Set proper variables to allow easy "make" building of a NetBSD subtree.
# Generated from: \$NetBSD: build.sh,v 1.110 2003/07/28 12:33:42 lukem Exp $
# Generated from: \$NetBSD: build.sh,v 1.111 2003/07/29 10:07:15 lukem Exp $
#
EOF
for f in ${makeenv}; do
eval echo "${f}=\'\$$(echo ${f})\'\;\ export\ ${f}" ${makewrapout}
if eval "[ -z \"\${$f}\" -a \"\${${f}-X}\" = \"X\" ]"; then
eval echo "unset ${f}" ${makewrapout}
else
eval echo "${f}=\'\$$(echo ${f})\'\;\ export\ ${f}" ${makewrapout}
fi
done
eval echo "USETOOLS=yes\; export USETOOLS" ${makewrapout}

View File

@ -1,4 +1,4 @@
.\" $NetBSD: BUILDING.mdoc,v 1.26 2003/07/18 16:30:48 lukem Exp $
.\" $NetBSD: BUILDING.mdoc,v 1.27 2003/07/29 10:07:16 lukem Exp $
.\"
.\" Copyright (c) 2001-2003 The NetBSD Foundation, Inc.
.\" All rights reserved.
@ -40,7 +40,7 @@
.\" Toolchain prefix for commands
.ds toolprefix nb
.
.Dd July 18, 2003
.Dd July 29, 2003
.Dt BUILDING 8
.Os NetBSD
.
@ -1052,6 +1052,8 @@ Set
.Sy MAKEOBJDIRPREFIX
to
.Ar obj .
Unsets
.Sy MAKEOBJDIR .
.
.It Fl m Ar mach
Set the value of
@ -1109,8 +1111,12 @@ that will place the built object files under
For instance, a setting of
.Sy /usr/obj
will place build-time files under
.Sy /usr/obj/bin , /usr/obj/lib ,
.Sy /usr/obj/bin ,
.Sy /usr/obj/lib ,
.Sy /usr/obj/usr.bin ,
and so forth.
Unsets
.Sy MAKEOBJDIRPREFIX .
.
.It Fl o
Set the value of
@ -1164,14 +1170,18 @@ Set
.Op Ar value
.Sm on
.Xc
Set the variable
Set the environment variable
.Ar var
to
.Ar value
(which is optional).
to an optional
.Ar value .
This is propagated to the
.Sy \*[toolprefix]make
wrapper.
.
.It Fl w Ar wrapper
Create the \*[toolprefix]make wrapper script (see below) in a custom location,
Create the
.Sy \*[toolprefix]make
wrapper script (see below) in a custom location,
specified by
.Ar wrapper .
This allows, for instance, to place the wrapper in
@ -1181,6 +1191,13 @@ Note that
.Ar wrapper
is the full name of the file, not just a directory name.
.
.It Fl Z Ar var
Unset ("zap") the environment variable
.Ar var .
This is propagated to the
.Sy \*[toolprefix]make
wrapper.
.
.El
.
.Ss The \*q\*[toolprefix]make-MACHINE\*q wrapper script
@ -1207,6 +1224,12 @@ with several key variables pre-set, including
.Sy MACHINE , MACHINE_ARCH ,
and
.Sy TOOLDIR .
.Sy build.sh
will also set variables specified with
.Fl V ,
and unset variables specified with
.Fl Z .
.Pp
This script can be symlinked into a directory listed in
.Sy PATH ,
or called with an absolute path.