'copy-releasedir' is done before doing 'image'. Failure to do so
leads to a race condition that may result in build errors on
parallel builds with '-j 4' and '-j 16'.
per floppy for a while. (The rest of the sums are ok).
Change the 'padded' size to include all the space in the last 8k block
of the tar file.
Similarly if the image doesn't fit, report the exact amount of overflow.
Recreating the makefile when the crunchgen program has changed is probably
adequate, and it allows a lot of later optimisations to still apply.
In particular:
- the final link for ramdiskbin
- the create of the embedded filesystem
- the inclusion of the ramdisk into the kernel
- compressing the kernel
Unless something else actually requires one of the above.
of 'boot' and 'netbsd'.
This makes it possible for the tar archive to end at the end of the 2.88M
floppy, instead of either 4k before, or 6k after.
Gives us a whole extra 4k.
The very observant might realise that we don't need the final 1024 bytes
of nulls written to the floppy either, so they could be deleted!
Implement MDSET_NOGZIP & MDSET_NOGZIP.${FILENAME}, to prevent the gzip
of the final image. This is useful if that image has already been
munged & gzipped by MDSET_POST* or MDSET_SUFFIXES*.
${MAKE} ${CRUNCHENV} ...
instead of
${CRUNCHENV} ${MAKE} ...
so that CRUNCHENV overrides any user-provided command-line make(1) variables.
This fixes /rescue build problems for people who pass settings such
as MKKERBEROS=yes in via the make(1) command-line.
(causing the decompress to generate random data).
I've changed it to pad using:
dd if=xx.fs of=xx.fs conv=sync conv=notrunc bs=${floppysize}b count=1
which isn't subject to rounding errors!
This might be the fix for PR/25552
expect those where at least one of the language variants isn't built,
and those that are known not to have enough space (i386 ramdisk-tiny).
Files added to list.sysinst, list.sysinst.en is used when these files
cannot be added.
This might hit a size limit on another build - but I have no (sane) way of
testing it.
DISTRIBVERDEP in Makefile.distrib, and make both sysinst and
distribution notes use that information so that they rebuild
if the kernel version changes.
Distribution notes didn't have this before, sysinst had a private
(now outdated, since sys/sys/param.h now determines version) copy
of this.
* Use "mknod -F netbsd -r" to create nodes, instead of
"rm ; mknod; chmod; chown".
This means permissions & ownership of existing nodes will
not be changed.
This is up to 30% faster when populating an empty /dev,
and nearly 2x faster when re-running on an existing /dev.
* New options:
-f force change of permission & ownership of existing
devices
-m mknod override name/path of mknod program
(which defaults to $TOOL_MKNOD, then "mknod").
-s generate mtree(8) specfile instead of creating devices
* Remove /usr/etc from $PATH; not needed anymore.
* Provide functions to create devices & directories:
mkdev name [b|c] major minor [mode{=600} [gid{=0} [uid{=0}]]]
create device node `name' with the appropriate permissions
lndev src target
create a symlink from src to target
makedir dir mode
create directory with appropriate mode
* UIDs and GIDs are hardcoded in at MAKEDEV generation time.
(Unfortunately there's not a simple way of determining a GID
a la "id -n user" for determining a UID).
This was tested by generating MAKEDEV for each MACHINE,MACHINE_ARCH
combination and comparing the results of "MAKEDEV all" from the
previous version to the new one.
(This testing actually highlighted mistakes in the previous configuration!)
Simplify distrib/common/Makefile.makedev to use "MAKEDEV -s"
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC
For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo
Document all of these in bsd.README.
This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.
Change name of target build from xxx.mk from 'all' to xxx.crunched to avoid
picking up baggage from bsd.own.mk and bsd.prog.mk.
Fixes toolchain/21563 (with new crunchgen binary)
Explicitly check times on built targets so to stop make rebuilding
the later targets.
nbmake in src/distrib/i386/floppies/ramdisk-big (etc) will now
pick up changes to source files that make the crunched binary.
64 bit block pointers, extended attribute storage, and a few
other things.
This commit does not yet include the code to manipulate the extended
storage (for e.g. ACLs), this will be done later.
Originally written by Kirk McKusick and Network Associates Laboratories for
FreeBSD.