test with "${MKxxx}" = "no" instead of -z "${MKxxx}"
Ignore errors when running pwd -P. (GNU coreutils incorrectly complains)
Both problems pointed out in private email from Christian Limpach.
rather than adding '-s' to make's command line in the makewrapper,
use the .SILENT target based on MAKEVERBOSE's value.
This means that you can do:
./build.sh -N 1 makewrapper
$TOOLDIR/bin/nbmake-$MACHINE
# runs at MAKEVERBOSE==1, with command lines suppressed
$TOOLDIR/bin/nbmake-$MACHINE MAKEVERBOSE=2
# runs at MAKEVERBOSE==2 for this invocation, with command lines shown
trying to use them internally to build.sh.
Fixes issue where build.sh would run "make cleandir" if MKUPDATE=yes was
set in mk.conf and -u wasn't given to build.sh.
to be at any time that build.sh is run without -o, because we need
the objdir of the top-level to exist if build.sh is going to provide
a default DESTDIR/RELEASEDIR, and with the previous code, if
MAKEOBJDIRPREFIX was used and the objdir of the source tree didn't
exist, build.sh would incorrectly determine the DESTDIR.
(mmm, obscure bugs).
* add "releasekernel=conf", to install a gzipped copy of the kernels
built by "kernel=conf" to RELEASEDIR/MACHINE/binary/kernel
build.sh:
* be more consistent in various status messages
* move the {release,}kernel=conf conf parsing code into getkernelconf()
and use in both buildkernel() and releasekernel()
* only warn once when building multiple kernels without updating the tools
the .OBJDIR of the top of the source tree, but expressing that in 1
line or less starts to get complicated). Requested by Hubert.
* When using a -el or -eb MACHINE "shortcut", use that original value
as the MACHINE for the default makewrapper filename. Requested by Simon.
which sets the appropriate MACHINE_ARCH and rewrites MACHINE to lose
the -e[bl] suffix.
* Don't default to a MACHINE_ARCH for evbmips or sbmips.
Per discussion wth Simon Burge.
* If not expert mode, provide defaults for:
DESTDIR /top/of/obj/destdir.${MACHINE}
RELEASEDIR /top/of/obj/releasedir
* Collate the various status messages output during the run
and display them at the end in a "summary report".
* Cross-check the validity of MACHINE against MACHINE_ARCH.
Fixes PR [toolchain/20193] from David Maxwell.
* Highlight that the tools will be rebuilt if UPDATE isn't set.
* Add stronger language recommending against -E unless you
* Improve whitespace use in usage()
Code stuff:
* Be consistent about using "${var}"
* Be more consistent how [ tests ] are run
* Improve some comments
* Rename getmakevar() to raw_getmakevar()
* Rename safe_getmakevar() to getmakevar()
* cd back to ${TOP} after a kernel build.
* Always keep the tmpdir around for the build (it's where the
status messages are collated, for one).
Add "makewrapper" operation to build.sh.
[The above changes were suggested by Alan Barrett on current-users@]
Fail if building as non-root unless: UNPRIVED is set, -U is given, or -E
(expert mode) is given.
[Suggested by James Wetterau in private email]
Improve the examples in BUILDING.
parameters, and a list of "operations" defines what to do.
The full usage is show below. Notes:
`-b' has been deprecated (it always occurs now)
`-d' is replaced by "distribution"
`-R rel' onlys sets RELEASEDIR; use "release" to build a release
`-k kern' has been replaced by "kernel=kern"
`-i idir' has been replaced by "install=idir"
-r now occurs before nbmake is rebuilt
Add a copyright (long due!). Rework the code to (a KNF inspired) ShellNF.
Use functions appropriately. Allow `nb' prefix to be easily changed to
something else. Solve world peace (just kidding)
This is part of the (never achievable) goal of attempting to make
NetBSD easier to build...
--8<-- new usage follows --8<--
Usage: build.sh [-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 [...] ]
System build operations (all imply "obj" and "tools"):
build Run "make build"
distribution Run "make distribution" (includes etc/ files)
release Run "make release" (includes kernels & distrib media)
Other operations:
obj Run "make obj" (default unless -o)
tools Build and install tools
kernel=conf Build kernel with config file `conf'
install=idir Run "make installworld" to `idir'
(useful after 'distribution' or 'release')
Options:
-a arch Set MACHINE_ARCH to arch (otherwise deduced from MACHINE)
-B buildId Set BUILDID to buildId
-D dest Set DESTDIR to dest
-E Set "expert" mode; disables some DESTDIR checks
-j njob Run up to njob jobs in parallel; see make(1)
-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 Set RELEASEDIR to release
-r Remove contents of TOOLDIR and DESTDIR before building
-T tools Set TOOLDIR to tools. If unset, and TOOLDIR is not set in
the environment, nbmake will be (re)built unconditionally.
-U Set UNPRIVED
-u Set UPDATE
-V v=[val] Set variable `v' to `val'
-w wrapper Create nbmake script as wrapper
(default: ${TOOLDIR}/bin/nbmake-${MACHINE})