If site.trust.mk does not set VE_SIGNATURE_LIST
initialize it based on content of VE_SIGNATURE_EXT_LIST
which is in turn initialized from TRUST_ANCHORS.
Sponsored by: Hewlett Packard Enterprise Development LP
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D61245
For 2027 we need to support new, stronger signatures and hashes.
Re-work Makefile.inc and local.trust.mk to define
VE_SIGN_URL_LIST or VE_SIGNATURE_LIST (can be derrived from
VE_SIGN_URL_LIST) containing tuples of sig/method/hash/flags and
for VE_SIGN_URL_LIST the same plus /url.
From VE_SIGNATURE_LIST we derrive VE_SIGNATURE_EXT_LIST used to populate
signature_ext_list which defines the order in which we look for
signatures for a manifest.
We also populate signature_info_list which maps a signature ext to the
needed hash and flags to indicate whether that hash needs to be repeated.
verify_sig will lookup signature_info_list, no match means not
supported. For asc we just call verify_asc() otherwise we call
verify_ec() or verify_rsa() depending on the key type found in the
certificate chain, we pass the signature_info entry to these so they
know which hash to use and whether to repeat it.
The need to repeat the hash is a consequence of sending a hash to a
server using signature methods that insiste on hashing their input.
To-date only our original ECDSA signatures use this.
A FakeHash class added in 2012 avoids that wrinkle.
This is a much more flexible arrangement and should be more
readily usable by others.
Sponsored by: Hewlett Packard Enterprise Development LP.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D61007
The setting of _TTY ran afoul of set -e.
Also the handling of Myname blew up if debug.sh included by
a login sheel (eg in .profile).
For non-posix shell, leave false alone if it is a builtin.
Complete the controls with -v "values":
sh ./safe_eval.sh set_var -a "knob" -v "no yes" knob=yes knob=no knob=ok ok=yes
knob=yes
knob=no
denied value 'ok' for 'knob'
denied variable 'ok'
safe_var_set can be used to safely handle var=val args from command line.
eg.
while :
do
case "$1" in
*=*) # eval "$1" can be very dangerous
# safe_var_set will only eval if
# both var and value are sane.
if ! safe_var_set "$1"; then
case "$?" in
1) echo invalid variable name;;
2) echo invalide value;;
3) echo variabel not allowed;;
esac
fi
shift
;;
*) break
;;
esac
done
Intersting/relevant changes since bmake-20260508
ChangeLog since bmake-20260508
2026-07-04 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260704
2026-07-03 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260703
Merge with NetBSD make, pick up
o meta.c: do a better job of resolving relative paths
o var.c: add alternation support to :M
eg. :M*{Makefile*,.mk} matches any *Makefile* or *.mk
2026-07-02 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260702
Merge with NetBSD make, pick up
o meta.c: .MAKE.META.FILTER can be used to more generally filter
relevant content of .meta file in meta_oodate.
2026-06-19 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260619
Merge with NetBSD make, pick up
o make.1: fix description of .MADE it is a source not a target.
* update mk files
2026-06-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260609
Merge with NetBSD make, pick up
o parse.c: allow semicolons and parentheses in dependency line
expressions
mk/ChangeLog since bmake-20260508
2026-07-04 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20260704
2026-07-03 Simon J Gerraty <[email protected]>
* dirdeps.mk: make use of alternation support in latest bmake
when setting .MAKE.META.IGNORE_FILTER so we can get both
Makefile.depend* and *.mk to make cache out-of-date.
2026-07-02 Simon J Gerraty <[email protected]>
* meta2deps.py: detect corrupted filemon data on Linux,
caused by lost newlines.
2026-06-21 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20260621
* gendirdeps.mk: more debug output
* meta.autodep.mk: remove extra } from GENDIRDEPS_ENV
2026-06-19 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20260619
* install-new.mk: for POSIX_SHELL we need .new*
rather than just .new
2026-05-21 Simon J Gerraty <[email protected]>
* meta2deps.{py,sh}: skip pathnames with spaces - not worth the pain.
Update to latest dirdeps related makefiles.
dirdeps.mk tweaks useful for universe among other corner cases.
also additional filtering for bogus paths ending in /
gendirdeps.mk allow more debugging
also additional filtering for bogus paths ending in /
install-new.mk fix bug when isPOSIX_SHELL is true
meta2deps.?? handle file names with spaces by ignoring them
Reviewed by: stevek
Differential Revision: https://reviews.freebsd.org/D57683
Use a value that do_execve will ignore since there's nothing there to do.
With this we can set the 'indirect' flag on rtld, to prevent direct execution
being used to bypass the 'indirect' flag on python3:
root@vuefi:~ # /libexec/ld-elf32.so.1 /usr/bin/python3 -c 'print("pwned")'
pwned
root@vuefi:~ # veriexec -z enforce
root@vuefi:~ # /libexec/ld-elf32.so.1 /usr/bin/python3 -c 'print("pwned")'
/libexec/ld-elf32.so.1: Operation not permitted.
root@vuefi:~ #
load_file seems missnamed since it is only used by load_interp
so rename it to load_interp_file.
Reviewed by: imp
Sponsored by: Hewlett Packard Enterprise Development LP
Differential Revision: https://reviews.freebsd.org/D57649
safe_set is the routine that does all the work.
In safe_set; if we replace one=`cmd arg` or two=$(cmd arg) add quotes
around the result eg. one="_cmd arg_"
Also lines containing `` or $() are too likely to result in syntax
errors, so just delete them.
Differential Revision: https://reviews.freebsd.org/D56795
Intersting/relevant changes since bmake-20260313
ChangeLog since bmake-20260313
2026-05-08 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260508
Merge with NetBSD make, pick up
o make.1: fix description of '-' handling in jobs-mod
by intenting it correctly.
2026-04-13 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260406
Merge with NetBSD make, pick up
o cleanup unnecessary parens
* configure.in: add --with-save-dollars to control default for
.MAKE.SAVE.DOLLARS - address FreeBSD PR 294436
mk/ChangeLog since bmake-20260313
2026-05-09 Simon J Gerraty <[email protected]>
* gendirdeps.mk: also apply ':S,/$,,' and ':C,/(\.[^.]*)$,\1,'
when setting DIRDEPS prior to saving.
* dirdeps.mk: when debugging it is handy to be able to skip
recursing so if DEBUG_DIRDEPS contains 'norecurse' we will only
process the immediate DIRDEPS.
Also if DEBUG_DIRDEPS contains '-V' we process sections normally
skipped when doing 'make -V'.
o ensure we do not get duplicate build dirs due to someone
adding a trailing '/' or '/.${TARGET_SPEC}' to a DIRDEPS entry.
Add ':S,/$,,' when setting '__depdirs' and
add ':C,/(\.[^.]*)$,\1,' when setting '__qual_depdirs'.
2026-04-24 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20260424
* Use MK_META_AUTODEP to control use of meta.autodep.mk
so it can be used independently of MK_DIRDEPS_BUILD for
bootstrapping.
* sys.vars.mk (M_type): use :sh rather than :sh1 to avoid
surprises in a .for loop.
Writing to /proc/$pid/regs can also be leveraged to mess with memory.
Only allow a trusted process to do so.
Sponsored by: Hewlett Packard Enterprise Development LP.
Reviewed by: olce
Differential Revision: https://reviews.freebsd.org/D56763
NetBSD make defaults this to "yes",
bmake defauts it to "no" to retain the traditional behavior.
The default is dealt with in bmake's Makefile but that does not
address boot-strap.
For now, just change the ifdef in main.
PR: 294436
file_loadraw() can have a need to load unverified files
like "dtrace_dof". Allow severity_guess() to look at the filename
but if it returns less than VE_MUST check that the type is not
one we insist on verifying.
In vectx_open if severity < VE_MUST we can allow it to be unverified.
If passed VE_GUESS we call severity_guess().
Regardless, we record severity in ctx so it is available to vectx_close().
Sponsored by: Hewlett Packard Enterprise Development LP
Reviewed by: khng
Differential Revision: https://reviews.freebsd.org/D56297
Move is_restricted_var() to libsa/environment.c so it can be leveraged
by boot_setenv called from subr_boot with not truted input.
Also, allow for local tuning via ENV_IS_RESTRICTED_ALLOWED_LIST and
ENV_IS_RESTRICTED_LIST
Sponsored by: Hewlett Packard Enterprise Development LP.
Reviewed by: kevans, imp
Differential Revision: https://reviews.freebsd.org/D56287
Intersting/relevant changes since bmake-20251111
ChangeLog since bmake-20251111
2026-03-12 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260313
Merge with NetBSD make, pick up
o make: ensure .MAKE.SAVE_DOLLARS is initialized so makefiles like
sys.vars.mk can test its value to know how to deal with macros
that need to save '$' during ':='.
* Makefile: default MAKE_SAVE_DOLLARS_DEFAULT to "no"
for traditional behavior.
2026-03-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260310
Merge with NetBSD make, pick up
o unit-tests ensure TEST_MAKE is absolute path
and tests that make symlink for ${MAKE} can run in parallel.
2026-03-03 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260303
Merge with NetBSD make, pick up
o job.c: MaybeSubMake: Look for expansion of ${.MAKE}
and if necessary its basename, and only match if at start of line
or preceded by space.
2026-02-28 Simon J Gerraty <[email protected]>
* Makefile: mark ${PROG} and ${OBJS} as .META
MaybeSubMake will otherwise mistake them for sub-makes
* VERSION (_MAKE_VERSION): 20260301
Merge with NetBSD make, pick up
o job.c: MaybeSubMake: skip control chars [@+-] at start of line
when checking for ${MAKE}
2026-02-22 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260222
o mk file update
2026-02-16 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260216
Merge with NetBSD make, pick up
o minor cleanups
2026-02-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260210
Merge with NetBSD make, pick up
o document that multiple variables can be set on command line.
o move MaybeSubMake to job.c so it can be called on expanded
commands for more accuracy and less overhead.
o main.c: set .MAKE.VERSION as read-only.
* unit-tests/opt-{chdir,where-am-i}.mk: use MAKEOBJDIRPREFIX=/
to avoid tripping over an unreadable /usr/obj
2026-02-04 Simon J Gerraty <[email protected]>
* unit-tests/varname-make_stack_trace.mk: for
FreeBSD and similar set .MAKE.ALWAYS_PASS_JOB_QUEUE=no
to ensure we get the expected errors.
* VERSION (_MAKE_VERSION): 20260202
Merge with NetBSD make, pick up
o on error avoid duplicate stack trace to stderr
2026-01-11 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260111
Merge with NetBSD make, pick up
o var.c: add explicit check for empty re as not all
regex libs throw an error as expected, in this case.
2026-01-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20260110
Merge with NetBSD make, pick up
o minor cleanups
mk/ChangeLog since bmake-20251111
2026-03-12 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20260313
* sys.vars.mk: use .MAKE.VERSION
M_type can simply use '$x'
2026-02-22 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20260222
* dirdeps.mk, sys.mk: add dependent option
UPDATE_DIRDEPS_CACHE/DIRDEPS_CACHE.
It can be useful to use -DWITHOUT_UPDATE_DIRDEPS_CACHE to
temporarily treat dynamic DIRDEPS_CACHE as static.
2026-01-10 Simon J Gerraty <[email protected]>
* meta.autodep.mk (${_DEPENDFILE}): add .NOMETA
2026-01-08 Simon J Gerraty <[email protected]>
* rust.mk: better accommodation for RUST_LIBS.
Set RUST_{LIBS,PROGS}_CARGO_BUILD_OUTPUT_LIST to
simplify staging.
2025-12-08 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20251207
* sys.vars.mk: replace MAKE_POSIX_SHELL usage with isPOSIX_SHELL
Using ${isPOSIX_SHELL:U:Nfalse} provides a boolean for make
and ${isPOSIX_SHELL:Ufalse} does the same for target scripts.
Both will be false if isPOSIX_SHELL is not set or set to false.
This has the advantage that if only POSIX shells are expected
sys.mk (or something it includes) can simply do isPOSIX_SHELL?=:
The STAGE_SETS and STAGE_TARGETS need to match
STAGE_DIR.
For each STAGE_SET we have STAGE_DIR.${STAGE_SET}
and create a target stage_files.${STAGE_SET},
the settings all need to be self consistent to work.
Update to the latest makefiles etc from bmake.
Mostly this just replaces sjg license with an SPDX tag.
There are also some improvements to meta2deps* and optimizations
to leverage POSIX shell features in some target scripts.
Default isPOSIX_SHELL to ':' in sys.mk to enable these.
Use :sh1 in M_type if possible.
bsd.progs.mk has diverged too much to touch beyond making the
SPDX tag update.
Reviewed by: stevek
Differential Revision: https://reviews.freebsd.org/D54150
Intersting/relevant changes since bmake-20250804
ChangeLog since bmake-20250804
2025-11-15 Simon J Gerraty <[email protected]>
* boot-strap: unset more things from env and save a copy
to env.out for debugging.
2025-11-12 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20251111
Merge with NetBSD make, pick up
o var.c: add :sh1 which only evaluates command on first reference.
2025-11-11 Simon J Gerraty <[email protected]>
* configure.in: Force filemon=no for Cygwin and MINGW64_NT
2025-11-10 Simon J Gerraty <[email protected]>
* unit-tests/Makefile: handle MINGW64_NT
mark some tests broken, filter others as per Cygwin.
2025-10-23 Simon J Gerraty <[email protected]>
* make.1: document MAKE_VERSION.
2025-10-22 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20251022
* configure.in: Add a check that lua is version 5.2 or later
if not we want to skip running check-expect.lua
2025-09-16 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250916
Merge with NetBSD make, pick up
o var.c: avoid compiler warning from hexdigits
mk/ChangeLog since bmake-20250804
2025-11-18 Simon J Gerraty <[email protected]>
* sys.vars.mk: set MAKE_POSIX_SHELL to 1 if .SHELL is POSIX, 0 if not.
set isPOSIX_SHELL for use in target scripts.
* meta.stage.mk: set MAKE_POSIX_SHELL if needed.
* install-new.mk: use ${isPOSIX_SHELL:Ufalse} to see if we can
avoid running 'expr'.
* install-new.mk: Allow use of cp or mv - controlled by CPMV_OP
(default mv).
2025-11-13 Simon J Gerraty <[email protected]>
* sys.vars.mk: add M_sh1 so we can handle older bmake that does
not support :sh1
2025-11-11 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20251111
* meta2deps.sh: reset some vars for each new meta file
set meta_file to path of meta file.
If meta2deps appears in DEBUG_SH set -x.
2025-09-16 Simon J Gerraty <[email protected]>
* options.mk: Add OPTIONS_DEFAULT_DEPENDENT_REQUIRED of the form
OPTION/REQUIRED[/VALUE]
if OPTION is $VALUE (default is "yes"), then REQUIRED must be too.
We add OPTIONS_DEFAULT_DEPENDENT_REQUIRED (sans any /{yes,no}) to
OPTIONS_DEFAULT_DEPENDENT so DEPENDENT/REQUIRED follow the same
processing.
Also add OPTIONS_FORCED_VALUES of the form OPTION/{yes,no}
we add any OPTIONS_FORCED_NO and OPTIONS_FORCED_YES before
processing.
Simplify the processing of OPTIONS_DEFAULT_VALUES and
OPTIONS_DEFAULT_DEPENDENT by splitting the tuples and use two
iterator variables in the .for loops.
2025-08-09 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250808
* replace sjg license with just BSD-2-Clause SPDX tag
Files read by '.' cannot workout for themselves where they are
or what they are called, so set dot_dir and dot_file to pass
this information to them.
Reviewed by: obrien, stevek
Differential Revision: https://reviews.freebsd.org/D53476
common/misc.c is a non-optional part of loader.
If LOADER_NET_SUPPORT is not defined provide a stub that always returns
false.
Reviewed by: kevans, des
Differential Revision: https://reviews.freebsd.org/D52060
When doing file verification, tftp needs to be able to handle multiple
open files concurrently.
We also need tftp_stat() to provide useful values for st_dev and st_ino.
Allow an architecture to define NETPROTO_DEFAULT.
The default is NET_NFS for backwards compatability.
In net_parse_rootpath() fix parsing of
<scheme>://<ip>[:<port]/<path>
and ensure we return INADDR_NONE unless we successfully
parsed an addr, so we don't end up clobbering rootip obtained
from bootp().
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D51187
Attempting to mount or even open / with some tftp servers
causes a several minute delay in boot.
Since opening a directory via TFTP does not make sense, we
avoid it. We don't know if using TFTP until after net_open()
has been called.
Add an is_tftp() accessor to avoid everyone having to include
all the net* headers.
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D51447
To avoid a layering violation in open() allow fs_ops to
indicate that devopen() should be skipped.
This is only true for pkgfs.
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D51684
Intersting/relevant changes since bmake-20250707
ChangeLog since bmake-20250707
2025-08-04 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250804
Merge with NetBSD make, pick up
o meta.c: allow printing only partial string to meta file
in jobs mode, otherwise we end up with duplicated output when
buffer does not end in newline.
Add a suitable unit test.
mk/ChangeLog since bmake-20250707
2025-07-24 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250724
* meta2deps: Allow X record to have 3 or 4 args.
V4 filemon on Linux produces 3
V5 filemon on FreeBSD produces 4
2025-07-22 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250721
* meta2deps.{py,sh}: detect corrupted filemon output (an issue on
Linux) by checking each record type has the correct number of
words. Throw an error if necessary so that gendirdeps.mk will not
update Makefile.depend
The metatags file informs install of kernel and modules to load,
allow it to also case variables to be set in env.
Reviewed by: imp
Sponsored by: Juniper Networks, Inc
Differential Revision: https://reviews.freebsd.org/D51446
Intersting/relevant changes since bmake-20250618
ChangeLog since bmake-20250618
2025-07-07 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250707
Merge with NetBSD make, pick up
o cond.c: improve debug log message for 'exists' function.
complain about unfinished escape sequences or string literals.
2025-07-04 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250704
Merge with NetBSD make, pick up
o make.1: add a DIAGNOSTICS section for make to reference.
o main.c: simplify the warning for invalid -J by refering to
manual page.
2025-06-30 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250630
Merge with NetBSD make, pick up
o consistently use double quotes in error messages
o cond.c: if a condition is erroneous, skip the whole .if/.endif
o make_malloc.c: in cleanup mode, initialize freshly allocated memory
o str.c: error out on an ":M" modifier whose pattern ends with
backslash
o var.c: fix parsing of modifier parts for :gmtime and :localtime
add POSIX $^ support
mk/ChangeLog since bmake-20250618
2025-07-04 Simon J Gerraty <[email protected]>
* prog.mk: .MADE is a special source not a target!
stand/ is mostly debugged with printfs, in an ad hoc and sometimes
fragile manner. For example BOOTP_DEBUG in bootp.c cannot be defined
unless NETIF_DEBUG is defined in dev_net.c or build fails for lack of the
symbol debug.
The DEBUG_PRINTF implementation in stand.h addresses that and allows
for more control over debug output. It is compatible with the
usage in libsecureboot.
Simply define _DEBUG_LEVEL to the desired level of debug
or in the case of libsecureboot _DEBUG_LEVEL_VAR to the variable that
will hold that value - default is _debug which is static so each
translation unit can be controlled independently.
The 1st arg to DEBUG_PRINTF is a level which must be greater than or
equal to _DEBUG_LEVEL_VAR if the printf is to be called.
See libsecureboot for more examples.
Reviewed by: imp
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D51269
While netbooting with loader.efi on at least one arm64 platform
which uses u-boot emulating UEFI, the kernel gets corrupted, we
suspected the u-boot ethernet driver was still running.
Use netdev.dv_cleanup for efinet_dev to address this.
This in turn requires calling dev_cleanup() before bi_load() to avoid
a loader crash since bi_load() calls ExitBootServices.
Reviewed by: imp
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D51186
Intersting/relevant changes since bmake-20250414
ChangeLog since bmake-20250414
2025-06-18 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250618
Merge with NetBSD make, pick up
o parse.c: in a warning without location information,
print the stack trace
2025-06-15 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250615
Merge with NetBSD make, pick up
o add on-demand inter-process stack traces
o job.c,meta.c: do not discard empty lines in the output of a command
o job.c: add job prefix if necessary in non-default filtered mode
o parse.c,var.c: skip inter-process stack trace when
MAKE_STACK_TRACE=no
2025-06-12 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250612
Merge with NetBSD make, pick up
o use a common style for unexpected error messages
o parse.c: add program name to stack traces from sub-makes
add quotes to "in directory" line in stack traces
o var.c: check variable names for invalid characters when there
are no modifiers to apply. This detects and warns about gmake
syntax like: $(addprefix -I, $(LIST))
2025-06-09 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250606
Merge with NetBSD make, pick up
o main.c: fix bug in handling of output of children in jobs mode
2025-05-28 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250528
Merge with NetBSD make, pick up
o show contents of MAKEFLAGS in the stack trace.
o main.c: delay warning about bogus -J flag, if we end up in
compat mode before the call to InitMaxJobs, the warning isn't
necessary.
2025-05-25 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250525
Merge with NetBSD make, pick up
o main.c: set .CURDIR earlier so it can be reported in some errors.
2025-05-20 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250520
Merge with NetBSD make, pick up
o rename variables, remove now-redundant comments
o job.c: clean up building the shell commands in parallel mode
remove timeout for polling in parallel mode
o main.c: clean up error message for malformed internal -J option
2025-05-11 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250511
Merge with NetBSD make, pick up
o job.c: rename token pool variables to be more descriptive
move ContinueJobs further up, to eliminate a forward declaration
error out if writing to an internal pipe fails
clean up constant names and function names
use uniform debug log messages for the token pool
in the debug log, replace magic numbers with identifiers
o main.c: clean up error message for malformed internal -J option
o make.c: replace bitset in trace output with descriptive node
attributes
o targ.c: add end marker for -dg1, -dg2 and -dg3 debug log
o var.c: fix order of error messages in the ":?" modifier
2025-04-25 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250424
Merge with NetBSD make, pick up
o cleanup; replace unsigned int with just unsigned
Inline the TMPPAT macro, as it is only needed in a single place
o move struct Job from job.h to job.c
o job.c: group the code for handling the job token pool
avoid excessive values of -j
o make.c: fix grammar in debug log message
mk/ChangeLog since bmake-20250414
2025-05-28 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250528
* add dirdeps2dplibs.mk
2025-05-18 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250518
* meta.autodep.mk (META_FILES): re-work to fix filtering.
if OPTIMIZE_OBJECT_META_FILES==yes
provide a default META_FILE_OBJ_FILTER that selects a valid
.SUFFIX to match *o.meta, there's no guarantee that it will be as
simple as .o or .So etc.
We have to defer evaluation until the target script is run
for any of these filters to have any effect.
Use :S,${.OBJDIR}/,, rather than :T incase there are objects
in sub-dirs.
* lib.mk: leverage ${.SUFFIXES} when setting dependencies.
* add UPDATE_DEPENDFILE as a dependent option - follows
DIRDEPS_BUILD and use MK_UPDATE_DEPENDFILE as default for
UPDATE_DEPENDFILE when we think it should be yes.
This allows override with -DWITH[OUT]_UPDATE_DEPENDFILE
without overriding UPDATE_DEPENDFILE directly - which can lead to
trouble.
2025-05-16 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250515
* meta2deps.py: resolve the target of a Move or Link first
and track the last path resolved, then if the src is a relative
path we can easily use that last path to resolve the src correctly.
* meta2deps.sh: for a Move or Link add the dir of target path to
the list used to resolve the src path.
If we are doing DIRDEPS_BUILD and MK_RUN_TESTS is yes
we can hook tests associated with dirs to be built into the graph
such that we avoid circular dependencies but the build will fail
should any test fail.
Make MK_RUN_TESTS independent of MK_TESTS
also for non-DIRDEPS_BUILD ensure we have RELDIR and check it
against patterns in HOST_RUN_TESTS.
Reviewed by: stevek
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D50387
The build varies MAKEOBJDIRPREFIX at times which
can make it difficult to track the original OBJROOT.
This is easier when we get the original from env as SB_OBJROOT.
If SB_OBJROOT did not come from env, set and export it
the first time we set OBJROOT.
This allows SB_OBJROOT to be used in .MAKE.META.IGNORE* variables
to tweak what should be considered as making a target out-of-date.
Update auto.obj.mk to latest from contrib/bmake - handles relative
objdirs more simply and reliably.
Also update jobs.mk and stage-install.sh
Reviewed by: stevek
Differential Revision: https://reviews.freebsd.org/D50313
We restrict what an unverified loader.conf etc can set,
and the same restrictions are applied to interactive input.
We need to allow for exceptions (eg boot_verbose).
It is best if any allowed settings match up to '='.
If we do not allow it to be set, do not allow it to be unset
Reviewed by: stevek
Sponsored by: Juniper Networks, Inc.
This allows us to change the VERSION_FILE used for loaders
as well as set NEWVERS_DATE and BUILD_UTC to reflect the publish
date of loaders for secure-boot.
Sponsored by: Juniper Networks, Inc.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D50478
At least one instance of u-boot pretending to be EFI
is passing empty rootdev to loader which does not end well.
A simple precaution is harmless.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D50334
Intersting/relevant changes since bmake-20250308
ChangeLog since bmake-20250308
2025-04-14 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250414
Merge with NetBSD make, pick up
o job.c: clean up job and output handling
o parse.c: after entering POSIX mode, don't leave it again
2025-04-11 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250411
Merge with NetBSD make, pick up
o convert more messages to file:line: format
o for.c: condense code for parsing variable names in .for loops
2025-04-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250410
Merge with NetBSD make, pick up
o cond.c: remove redundant error counter when parsing a condition
2025-04-04 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250404
Merge with NetBSD make, pick up
o make.1: better document meta mode.
o var.c: fix error message for undefined variable in conditional.
2025-03-30 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250330
Merge with NetBSD make, pick up
o in POSIX compatability mode, give preference to sysV style modifiers.
o in stack trace with details and includes, list the current file
o parse.c: report file location in more common file:line: format.
o var.c: simplify error handling for unknown modifiers
let the ":O" and ":t" modifiers fall back to the ":from=to" modifier
stop parsing after seeing an unknown modifier in an expression
fix error message for unclosed expression and invalid :[...]
add details to errors about ::= modifier
add details about indirect modifiers to the stack traces
in stack traces from target commands, add the command level
2025-03-23 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250323
Merge with NetBSD make, pick up
o var.c: just ignore attempts to override a read-only global with
the same value.
mk/ChangeLog since bmake-20250308
2025-04-18 Simon J Gerraty <[email protected]>
* init.mk: include Skipping ${RELDIR} when _SKIP_BUILD is not empty.
2025-04-14 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250414
* init.mk: check ONLY_*_LIST and NOT_*_LIST for SKIP_BUILD_VAR_LIST
to set _SKIP_BUILD
* genfiles.mk: add FILTER support
* rst2htm.mk: latest docutils drops .py extensions
2025-03-26 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250326
* auto.obj.mk: fix and simplify handling of relative __objdir,
convert it to absolute before checking against .OBJDIR
Intersting/relevant changes since bmake-20250125
ChangeLog since bmake-20250125
2025-03-08 Simon J Gerraty <[email protected]>
* bsd.after-import.mk: by default generate makefiles
closer to BSD style.
* VERSION (_MAKE_VERSION): 20250308
Merge with NetBSD make, pick up
o clean up comments and code for parallel mode
o job.c: avoid SIGPIPE for children, call Job_Wait befor abort.
2025-02-27 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250225
Merge with NetBSD make, pick up
o job.c: reliably remove targets on interrupt,
by passing signal to children first.
mk/ChangeLog since bmake-20250125
2025-03-14 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250314
* meta.stage.mk: StageFiles --subdir: preserve the dir part of
each file under $dest
2025-03-12 Simon J Gerraty <[email protected]>
* meta.autodep.mk: do a better job of handling MAKESYSPATH in
GENDIRDEPS_ENV. If we have MAKE_VERSION >= 20230123 we can just
use .SYSPATH, otherwise it is a bit more complicated.
jobs.mk makes use of newlog.sh if found.
Set NEWLOG_SH in local.sys.env.mk to save jobs.mk searching for it.
PR: 284390
Reviewed by: stevek
Differential Revision: https://reviews.freebsd.org/D48737
Since we now have sdot, use it to get RC_LEVEL from rc.conf.d/rc_trace
also avoid logging execution of ':' when RC_LEVEL > 0
Reviewed by: stevek
Differential Revision: https://reviews.freebsd.org/D48856
Intersting/relevant changes since bmake-20240711
ChangeLog since bmake-20240711
2025-01-25 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250125
Merge with NetBSD make, sync up below change.
* unit-tests/Makefile: remove $TMPDIR via .END
to avoid failure in test on NFS - since the temp file for the
target script is open and thus gets renamed by the server rather
than removed.
2025-01-20 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250120
Merge with NetBSD make, pick up
o use FORK_FUNCTION so it can be forced to fork when doing coverage.
o main.c: avoid memory allocation in error path after exec failure.
2025-01-16 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250116
Merge with NetBSD make, pick up
o clarify that undefined expressions are allowed in dependencies
o simplify code for evaluating the '!=' variable assignment
2025-01-11 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250111
Merge with NetBSD make, pick up
o replace "Malformed conditional" with "Variable is undefined"
when appropriate
2025-01-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250110
Merge with NetBSD make, pick up
o job.c: remove some unnecessary layers in job handling
o unit-tests: test expressions based on undefined variables
2025-01-01 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20250101
Merge with NetBSD make, pick up
o var.c: reduce pointer indirections when unexporting a variable
2024-12-12 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20241212
* mk/ updates
2024-11-24 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20241124
Merge with NetBSD make, pick up
o var.c: fix confusing error message when overriding a read-only
variable
2024-11-22 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20241122
Merge with NetBSD make, pick up
o unit-tests/Makefile: optimize running of tests skip extra cat
in 99% of cases.
2024-11-15 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20241114
Merge with NetBSD make, pick up
o make.1: note that MAKEOBJPREFIX should be absolute path
also that it can be set via makefile if suitable care taken.
2024-11-10 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20241110
Merge with NetBSD make, pick up
o make: allow .../ (search here and above) in
.MAKE.MAKEFILE_PREFERENCE and -f argument.
2024-11-03 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20241101
Merge with NetBSD make, pick up
o parse.c: report filename:linenumber in parse debug output
2024-09-21 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240921
Merge with NetBSD make, pick up
o make.1: Only list the defaults for MAKEFILE_PREFERENCE once.
* Makefile: use genfiles.mk to generate ${MAN}
so that it can be tuned for local site.
Ensure MAN is defined before including Makefile.inc
* Makefile: use MK_GEN_MAN to make it easier to control whether we
generate ${MAN}
2024-09-16 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240909
* arch.c: fix NetBSD PR 58597
2024-09-01 Simon J Gerraty <[email protected]>
* Makefile: use SUBDIR.${MK_TESTS} so that we skip
unit-tests for obj and clean when FreeBSD is building WITHOUT_TESTS
* VERSION (_MAKE_VERSION): 20240901
Merge with NetBSD make, pick up
o reduce line length in error messages
o var.c: simplify printing of an evaluation stack element
2024-08-29 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240828
Merge with NetBSD make, pick up
o add more context to error message about recursive variables
o treat recursive variables non-fatally - continue parsing to end
of makefile
2024-08-12 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240808
Merge with NetBSD make, pick up
o improve some error messages for better clarify and readability
2024-07-22 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240722
Merge with NetBSD make, pick up
o job.c: remove dead code
2024-07-21 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240720
Merge with NetBSD make, pick up
o compat.c: do not run commands that have parse or evaluation errors.
o var.c: remove wrong error message about an undefined variable
mk/ChangeLog since bmake-20240711
2025-01-10 Simon J Gerraty <[email protected]>
* rust.mk: use RUST_LIBS and RUST_PROGS
2025-01-01 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20250101
* use W flag to :S and :C rather than :tW
2024-12-16 Simon J Gerraty <[email protected]>
* rust.mk: add RUSTFLAGS if needed
2024-12-12 Simon J Gerraty <[email protected]>
* init.mk (OBJS_SRCS_FILTER): apply this as
${OBJS_SRCS_FILTER:ts:} as we do in FreeBSD.
2024-12-03 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20241202
* setopts.sh: needed by newlog.sh
2024-11-22 Simon J Gerraty <[email protected]>
* meta.sys.mk: add META_MODE_XTRAS to META_MODE to make it
easier to add things like 'env' when debugging.
* install-mk (MK_VERSION): 20241122
* rust.mk: rename CARGO* to RUST_CARGO* so I don't feel
like this makefile should be renamed to cargo.mk
2024-11-11 Simon J Gerraty <[email protected]>
* dirdeps.mk: add DIRDEPS_CACHED_ENV to dirdeps-cached and
DIRDEP_USE_EPILOGUE to _DIRDEP_USE
2024-10-30 Simon J Gerraty <[email protected]>
* meta.sys.mk: if MK_META_ERROR_TARGET is yes and NEWLOG_SH is
set, and ERROR_LOGDIR already exists, hook _rotateErrorLog to
.BEGIN target.
2024-10-27 Simon J Gerraty <[email protected]>
* options.mk: add support for DEBUG_OPTIONS (similar to
DEBUG_DIRDEPS) to allow us to see where options get set.
Eg. DEBUG_OPTIONS="STAGING*" gives:
bmake[1]: "mk/options.mk" line 89: sys.mk: MK_STAGING=yes (MK_DIRDEPS_BUILD=no)
bmake[1]: "mk/options.mk" line 66: local.init.mk: MK_STAGING=yes
bmake[1]: "mk/options.mk" line 66: local.init.mk: MK_STAGING_PROG=no
bmake[1]: "mk/options.mk" line 89: own.mk: MK_STAGING_MAN=yes (MK_STAGING=yes)
bmake[1]: "mk/options.mk" line 89: own.mk: MK_STAGING_PROG=no (MK_STAGING=yes)
bmake[1]: "mk/options.mk" line 89: own.mk: MK_STAGING_RUST=no (MK_STAGING_PROG=no)
* own.mk: fix setting of STAGE_OBJTOP (normally set by sys.dirdeps.mk)
2024-10-26 Simon J Gerraty <[email protected]>
* rust.mk: add some documentation and support for staging
2024-10-25 Simon J Gerraty <[email protected]>
* rust.mk: a means of integrating Rust projects into a larger build.
2024-10-18 Simon J Gerraty <[email protected]>
* dirdeps-targets.mk: if DEBUG_DIRDEPS_TARGETS and we found
STATIC_DIRDEPS_CACHE, report its relative path.
2024-09-30 Simon J Gerraty <[email protected]>
* dirdeps.mk: tweak the debug message for "Loading" a
Makefile.depend file, always report what the actual makefile is
with the DIRDEP it is for.
Remove the redundant "Looking" message.
2024-09-26 Simon J Gerraty <[email protected]>
* meta2deps.py: when raising AssertionError include meta file name
with $SB trimmed if possible.
2024-09-23 Simon J Gerraty <[email protected]>
* meta2deps.py: replace assert() with raise AssertionError when we
detect missing eXits, to ensure a meaningful message gets into
log.
2024-09-21 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20240921
* FILES: add genfiles.mk
2024-09-20 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20240920
* cython.mk: Get PYTHON_VERSION from PYTHON
2024-08-31 Simon J Gerraty <[email protected]>
* subdir.mk: add ${SUBDIR.yes} - allows for SUBDIR.${MK_*}
and handle subdir with '-' in its name.
2024-08-23 Simon J Gerraty <[email protected]>
* install-mk (MK_VERSION): 20240820
* links.mk: Allow a filter to be applied to SYMLINKS etc.
It is up to [BUILD_][SYM]LINKS_FILTER to do something sane.
Also only claim we are making a symlink if the value changed.
gpg supports SHA384, SHA512 as well as SHA256 so allow for them.
Tweak Makefile.inc so we can build libsecureboot with only OpenPGP
trust anchors.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D48546
This will fail when mac_veriexec is enforced.
Move the check from procfs_doprocmem to proc_rwmem to ensure all
cases are covered.
Reviewed by: olce, markj
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D47484
When we match a tag and turn tracing, see if we have any
$DEBUG_ON:debug_add:tag in DEBUG_SH and if so add the new tag.
This allows for more focused debugging during boot.
Reviewed by: stevek
Sometimes it is desirable while debugging one script for it to enable
debugging of a child.
We can do that with
$DEBUG_DO DebugAdd tag
to add tag to DEBUG_SH but only when we are already debugging.
We need to undo NO_OBJ if we are staging
as it causes us to drop the stage* target cookies in src tree
which is bad, and may break doing the same targets for multiple
architectures.
Reviewed by: stevek
Add logic to bootstrap-packages.sh to handle constructs like:
SUBDIR.${MK_OPT}+= sub
and:
.if ${MK_OPT} == "yes"
SUBDIR+= sub
.endif
there are other methods used in various makefiles
so this will be better than nothing, but not complete coverage.
In either case a reldir will be added to
targets/packages/$package/Makefile.depend.options
rather than
targets/packages/$package/Makefile.depend
It does not matter that in many cases the Makefile.depend will end up
with no DIRDEPS.
Also check that parent Makefile does not have a subdir commented out,
before including it.
If BOOTSTRAP_PACKAGES_FLAGS is -v we report each Makefile.depend[.options]
we create.
Reviewed by: stevek
Try to compensate for the lack any origin for a DIRDEPS build.
bootstrap-packages will extract the PACKAGE lines from
the tree's Makefiles and use them to populate
targets/packages/Makefile.depend and targets/packages/*/Makefile.depend
so we can at least try to keep the Makefile.depend files throughout
the tree up to date.
This is far from ideal, as we cannot (easily) take into account
options that affect the contents of various packages.
Reviewed by: stevek
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D47065
Add a priv_check for PRIV_PROC_MEM_WRITE which will be blocked
by mac_veriexec if being enforced, unless the process has a maclabel
to grant priv.
Reviewed by: stevek
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D46692
Allow Debug{On,Off} to run associated hooks.
This makes it feasible to collect extra debug info at runtime
without needing to modify any potentially verified and hence immutable
scripts.
Like debug.sh, hooks.sh is extremely handy and used extensively
in many parts of Junos and its build environment.
It is provided here in the hope that others may benefit.
We do not dot hooks.sh by default to reduce overhead, but it can
but done from rc.conf et al using
$_HOOKS_SH . /libexec/hooks.sh
to avoid including more than once.
Reviewed by: stevek
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D46552
Since we are being paranoid, check that each arg to safe_dot is
actually a file as well as non-empty.
Check for white-space in filenames - these require special handling.
We only need to check kenv for DEBUG_SH once.
We also need to export DEBUG_SH to be useful.
Sponsored by: Juniper Networks, Inc.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D46219
Add missing flags to veriexec(8) as well as some examples to
help explain usage.
Also add veriexec.4
Sponsored by: Juniper Networks, Inc.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D46207
Intersting/relevant changes since bmake-20240625
ChangeLog since bmake-20240625
2024-07-13 Simon J Gerraty <[email protected]>
* cleanup redundant differences from NetBSD make
o parse.c: no longer uses mmap
o var.c: check __STDC_VERSION__ not __STDC__
2024-07-12 Simon J Gerraty <[email protected]>
* Apply some patches from NetBSD pkgsrc to reduce divergence
o meta.c: requires sys/select.h if available
o var.c: ensure SIZE_MAX has a value
o util.c: ensure SA_RESTART is defined
* configure.in: use *ksh* rather than just *ksh to match
ksh shell specification.
* unit-tests/Makefile: expand BROKEN_TESTS for ksh and
mksh in particular
2024-07-11 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240711
Merge with NetBSD make, pick up
o compat.c: allow Compat_RunCommand to also handle very long
commands by writing to a temp file when needed.
o main.c: extract the temp file logic recently added to Cmd_Exec
to Cmd_Argv so it can be leveraged by Compat_RunCommand.
2024-07-09 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240709
Merge with NetBSD make, pick up
o error out on parse/evaluation errors in shell commands
o var.c: error out on syntax errors in ':M' and ':N' modifiers
2024-07-07 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240707
Merge with NetBSD make, pick up
o only generate code for cleanup functions in CLEANUP mode
o hash.c: don't track hash table chain lengths during lookup
unless debugging
o main.c: move initialization of variable scopes to targ.c
o var.c: remove Var_End as it is now unnecessary
2024-07-06 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240706
Merge with NetBSD make, pick up
o reduce lint comments about ARGSUSED
o cond.c: error out on conditions containing the operators '&' and '|'
o str.c: error out on a matching malformed matching pattern '[['
o var.c: in error messages, distinguish parsing from evaluating
in error messages for anonymous variables, log the value
error out on unclosed expressions during parse time
2024-07-04 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240704
Merge with NetBSD make, pick up
o add more context information to error messages
o main.c: on error, print the targets to be made
add detailed exit status to message for failed sub-commands
o var.c: error out on the "Bad modifier" error message
2024-07-01 Simon J Gerraty <[email protected]>
* VERSION (_MAKE_VERSION): 20240701
Merge with NetBSD make, pick up
o var.c: add :tt for Title case
2024-06-30 Simon J Gerraty <[email protected]>
* configure.in: 20240630 further refine check for whether
TZ=Europe/Berlin works
* VERSION (_MAKE_VERSION): 20240630
Merge with NetBSD make, pick up
o job.c: reduce use of UNCONST
o main.c: add detailed exit status to message for failed sub-commands
o var.c: error out on some more syntax errors
add more context to "returned non-zero status" message