Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src - Add support for ./build.sh -k kern, which configures and b...
details: https://anonhg.NetBSD.org/src/rev/724dc0a4eb6e
branches: trunk
changeset: 538441:724dc0a4eb6e
user: lukem <lukem%NetBSD.org@localhost>
date: Sun Oct 20 15:48:01 2002 +0000
description:
- Add support for ./build.sh -k kern, which configures and builds the named
kernel using the $TOOLDIR toolchain. If kern doesn't contain `/', it will
be searched for in ${KERNCONFDIR} (typically, sys/arch/${MACHINE}/conf).
- Improve ./build.sh usage.
- Add some examples to the documentation.
This is heavily based on [toolchain/18739] from Alan Barrett <apb%cequrux.com@localhost>,
with improvements by me.
diffstat:
build.sh | 122 +++++++++++++++++++++++++++++++++++++----------------
doc/BUILDING.mdoc | 60 +++++++++++++++++++++++++-
2 files changed, 143 insertions(+), 39 deletions(-)
diffs (273 lines):
diff -r b94046728cfb -r 724dc0a4eb6e build.sh
--- a/build.sh Sun Oct 20 13:50:36 2002 +0000
+++ b/build.sh Sun Oct 20 15:48:01 2002 +0000
@@ -1,5 +1,5 @@
#! /usr/bin/env sh
-# $NetBSD: build.sh,v 1.69 2002/10/02 16:57:29 thorpej Exp $
+# $NetBSD: build.sh,v 1.70 2002/10/20 15:48:01 lukem Exp $
#
# Top level build wrapper, for a system containing no tools.
#
@@ -90,6 +90,7 @@
_x_:
echo \${$1}
.include <bsd.prog.mk>
+.include <bsd.kernobj.mk>
EOF
}
@@ -101,31 +102,35 @@
}
usage () {
- echo "Usage:"
- echo "$0 [-bdorUu] [-a arch] [-B buildid] [-j njob] [-m mach] "
- echo " [-w wrapper] [-D dest] [-M obj] [-O obj] [-R release] [-T tools]"
- echo ""
- echo " -a: set MACHINE_ARCH to arch (otherwise deduced from MACHINE)"
- echo " -B: set BUILDID to buildid"
- echo " -b: build nbmake and nbmake wrapper script, if needed"
- echo " -D: set DESTDIR to dest"
- echo " -d: build a full distribution into DESTDIR (including etc files)"
- echo " -j: Run up to njob jobs in parallel; see make(1)"
- echo " -M: set obj root directory to obj (sets MAKEOBJDIRPREFIX)"
- echo " -m: set MACHINE to mach (not required if NetBSD native)"
- echo " -n: show commands that would be executed, but do not execute them"
- echo " -O: set obj root directory to obj (sets a MAKEOBJDIR pattern)"
- echo " -o: set MKOBJDIRS=no (do not create objdirs at start of build)"
- echo " -R: build a release (and set RELEASEDIR to release)"
- echo " -r: remove contents of TOOLDIR and DESTDIR before building"
- echo " -T: set TOOLDIR to tools"
- echo " -t: build and install tools only (implies -b)"
- echo " -U: set UNPRIVED"
- echo " -u: set UPDATE"
- echo " -w: create nbmake script at wrapper (default TOOLDIR/bin/nbmake-MACHINE)"
- echo ""
- echo "Note: if -T is unset and TOOLDIR is not set in the environment,"
- echo " nbmake will be [re]built unconditionally."
+ cat <<_usage_
+Usage:
+$0 [-bdorUu] [-a arch] [-B buildid] [-D dest] [-j njob] [-k kernel]
+ [-M obj] [-m mach] [-O obj] [-R release] [-T tools] [-w wrapper]
+
+ -a arch set MACHINE_ARCH to arch (otherwise deduced from MACHINE)
+ -B buildid set BUILDID to buildid
+ -b build nbmake and nbmake wrapper script, if needed
+ -D dest set DESTDIR to dest
+ -d build a full distribution into DESTDIR (including etc files)
+ -j njob run up to njob jobs in parallel; see make(1)
+ -k kernel build a kernel using the named configuration file
+ -M obj set obj root directory to obj (sets MAKEOBJDIRPREFIX)
+ -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 set MKOBJDIRS=no (do not create objdirs at start of build)
+ -R release build a release (and set RELEASEDIR to release)
+ -r remove contents of TOOLDIR and DESTDIR before building
+ -T tools set TOOLDIR to tools
+ -t build and install tools only (implies -b)
+ -U set UNPRIVED
+ -u set UPDATE
+ -w wrapper create nbmake script at wrapper
+ (default TOOLDIR/bin/nbmake-MACHINE)
+
+Note: if -T is unset and TOOLDIR is not set in the environment,
+ nbmake will be [re]built unconditionally.
+_usage_
exit 1
}
@@ -133,13 +138,14 @@
MAKEFLAGS=
buildtarget=build
do_buildsystem=true
+do_buildonlykernel=false
do_buildonlytools=false
do_rebuildmake=false
do_removedirs=false
makeenv=
makewrapper=
opt_a=no
-opts='a:B:bdhj:m:nortuw:D:M:O:R:T:U'
+opts='a:B:bdhj:k:m:nortuw:D:M:O:R:T:U'
runcmd=
if type getopts >/dev/null 2>&1; then
@@ -173,6 +179,10 @@
-j) eval $optargcmd
parallel="-j $OPTARG";;
+ -k) do_buildonlykernel=true; do_buildsystem=false
+ eval $optargcmd
+ KERNCONFNAME=$OPTARG;;
+
# -m overrides MACHINE_ARCH unless "-a" is specified
-m) eval $optargcmd
MACHINE=$OPTARG; [ "$opt_a" != "yes" ] && getarch;;
@@ -308,7 +318,7 @@
if [ -z "$TOOLDIR" ] && [ "$MKOBJDIRS" != "no" ]; then
$runcmd cd tools
$runcmd $make -m ${TOP}/share/mk obj NOSUBDIR= || exit 1
- $runcmd cd ..
+ $runcmd cd "$TOP"
fi
#
@@ -394,7 +404,7 @@
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.69 2002/10/02 16:57:29 thorpej Exp $
+# Generated from: \$NetBSD: build.sh,v 1.70 2002/10/20 15:48:01 lukem Exp $
#
EOF
@@ -412,14 +422,52 @@
if $do_buildsystem; then
${runcmd-exec} "$makewrapper" $parallel $buildtarget
-elif $do_buildonlytools; then
- if [ "$MKOBJDIRS" != "no" ]; then
- $runcmd "$makewrapper" $parallel obj-tools || exit 1
+else
+ # One or more of do_buildonlytools and do_buildonlykernel
+ # might be set. Do them in the appropriate order.
+ if $do_buildonlytools; then
+ if [ "$MKOBJDIRS" != "no" ]; then
+ $runcmd "$makewrapper" $parallel obj-tools || exit 1
+ fi
+ $runcmd cd tools
+ if [ "$UPDATE" = "" ]; then
+ $runcmd "$makewrapper" cleandir dependall install
+ else
+ $runcmd "$makewrapper" dependall install
+ fi
fi
- $runcmd cd tools
- if [ "$UPDATE" = "" ]; then
- ${runcmd-exec} "$makewrapper" cleandir dependall install
- else
- ${runcmd-exec} "$makewrapper" dependall install
+ if $do_buildonlykernel; then
+ $runcmd echo "===> Building kernel ${KERNCONFNAME}"
+ if [ "$runcmd" = "echo" ]; then
+ # shown symbolically with -n
+ # because getmakevar might not work yet
+ KERNCONFDIR='${KERNCONFDIR}'
+ KERNOBJDIR='${KERNOBJDIR}'
+ else
+ KERNCONFDIR="$( getmakevar KERNCONFDIR )"
+ KERNOBJDIR="$( getmakevar KERNOBJDIR )"
+ fi
+ case "${KERNCONFNAME}" in
+ */*)
+ kernconfpath=${KERNCONFNAME}
+ KERNCONFNAME=`basename ${KERNCONFNAME}`
+ ;;
+ *)
+ kernconfpath=${KERNCONFDIR}/${KERNCONFNAME}
+ ;;
+ esac
+ $runcmd mkdir -p "${KERNOBJDIR}/${KERNCONFNAME}"
+ if [ "$UPDATE" = "" ]; then
+ $runcmd cd "${KERNOBJDIR}/${KERNCONFNAME}"
+ $runcmd "$makewrapper" cleandir
+ $runcmd cd "$TOP"
+ fi
+ $runcmd "${TOOLDIR}/bin/nbconfig" \
+ -b "${KERNOBJDIR}/${KERNCONFNAME}" \
+ -s "${TOP}/sys" "${kernconfpath}"
+ $runcmd cd "${KERNOBJDIR}/${KERNCONFNAME}"
+ $runcmd "$makewrapper" depend
+ $runcmd "$makewrapper" $parallel all
+ echo "New kernel should be in ${KERNOBJDIR}/${KERNCONFNAME}"
fi
fi
diff -r b94046728cfb -r 724dc0a4eb6e doc/BUILDING.mdoc
--- a/doc/BUILDING.mdoc Sun Oct 20 13:50:36 2002 +0000
+++ b/doc/BUILDING.mdoc Sun Oct 20 15:48:01 2002 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: BUILDING.mdoc,v 1.1 2002/09/21 08:19:29 lukem Exp $
+.\" $NetBSD: BUILDING.mdoc,v 1.2 2002/10/20 15:48:02 lukem Exp $
.\"
.\" Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -38,7 +38,7 @@
.\" NOTE: After changing this file, run "make build-docs" to generate the
.\" proper plaintext versions, and check in all BUILDING.* files!
.\"
-.Dd September 21, 2002
+.Dd October 21, 2002
.Dt BUILDING 8
.Os NetBSD
.
@@ -824,6 +824,40 @@
If you see build failures with -j, please save complete build logs
so the failures can be analyzed.
.
+.It Sy -k Em kernel
+Build a new kernel.
+The
+.Em kernel
+argument is the name of a configuration file suitable
+for use by
+.Xr config 8 .
+If
+.Em kernel
+does not contain any
+.Sq /
+characters, the configuration file is expected to be found in the
+.Sy KERNCONFDIR
+directory, which is typically
+.Sy sys/arch/MACHINE/conf .
+The new kernel will be built in a subdirectory of
+.Sy KERNOBJDIR ,
+which is typically
+.Sy sys/arch/MACHINE/compile
+or an associated object directory.
+In order to ensure that the kernel is built using up-to-date tools,
+it is strongly recommended that the tools be rebuilt (using the
+.Sy -t
+option) in a separate invocation of
+.Nm build.sh
+prior to using the
+.Sy -k
+option, or that the
+.Sy -t
+and
+.Sy -k
+options be used together in a single invocation of
+.Nm build.sh .
+.
.It Sy -m Em mach
Set the value of
.Sy MACHINE
@@ -963,6 +997,28 @@
.Sy PATH ,
or called with an absolute path.
.
+.Sh EXAMPLES
+.Bl -tag -width "build.sh"
+.It Li "./build.sh -t"
+Build a new toolchain.
+.It Li "cd ${KERNCONFDIR} ; ${TOOLDIR}/bin/nbconfig GENERIC"
+Use the new version of
+.Xr config 8
+to prepare to build a new GENERIC kernel.
+.It Li "cd ${KERNOBJDIR}/GENERIC ; ${TOOLDIR}/bin/nbmake-${MACHINE} dependall"
+Use the new toolchain to build a new GENERIC kernel.
+.It Li "./build.sh -t -k GENERIC"
+Build a new toolchain, and use the new toolchain to
+configure and build a new GENERIC kernel.
+.It Li "./build.sh -U -d"
+Using unprivileged mode,
+build a complete distribution in
+.Sy DESTDIR .
+.It Li "./build.sh -U -R /some/dir/RELEASE"
+Using unprivileged mode,
+build a complete release in the specified release directory.
+.El
+.
.Sh OBSOLETE VARIABLES
.
.Bl -tag -width "NBUILDJOBS"
Home |
Main Index |
Thread Index |
Old Index