I have been unintentionally scrubbing packages sets in the past which
is not a lot of fun so make the default hotfix mode a little less coarse.
While here the biggest issue of the hotfixing is not being able to see
package messages (not errors, these are shown as the build aborts) so
collect them in a variable to show at the end if all was building ok.
This is only relevant for multi-step hotfixing between core/plugins.
We only support OpenSSL now and the base build is also not fully
hooked up. Perhaps we can improve the situation later on but for
now just remove the spurious bits leading to errors.
The ZFS option is optional for VM images. It will create a ZFS
image instead of a UFS image. In case the build system knows
about "zpool" already the option takes the name of the ZFS pool
to create to sidestep potential clashes.
Flip the order of root and swap to allow VM image to grow.
Hook this up in extras.conf and also retrofit a serial console
for being able to test and debug in bhyve (build/boot).
Omit the use of a GPT root label in the ZFS case to deal with
devices names in the way that bsdinstall sets it up. It is
not all that important for ZFS anyway.
The setup likely needs further testing and tweaking to make
sure we emulate bsdinstall zfsboot script properly to avoid
future problems.
It's a lot of log content but somehow pkg wanting to bootstrap
into FreeBSD's 1.17 package during building is gone now which
sort of defeats the purpose if trying to fix this with more
debug output. *shrug*
While here fix a lie and add more documentation. We can switch
the include order for local build configuration to allow for more
thorough override capabilities.
COREENV/PLUGINSENV is a make(1) environment for package builds.
For PORTSENV we actually manipulate build process mostly relevant
for advanced hotfixing.
We do not want to install globs as the matching is very fuzzy and
also we no longer do. To make sure prevent use of globs in
install_packages so we can catch this in nightly builds if it
ever happens.
While here, allow to set a VERSION for core builds which ignores
the tag-version-derivation. It is useful for prerelease building.
Last but not least ADDITIONS should no longer look for SUFFIX so
if you want to build an image with SUFFIX=-devel and use a development
plugin overwrite ADDITIONS accordingly, e.g. ADDTIONS=os-dyndns-devel
So now we either set SETTINGS or CONFIGDIR and if the latter is used
SETTINGS variable is populated from the basename of CONFIGDIR to avoid
having to set two overrides at the same time.
Also add a build.conf.local optional build configuration to make
adjustments beyond our own scope feasible.
Always require build.conf since /dev/null does not work anymore
due to omission of embedded language versions.
The top view CONFIGDIR is not the low level CONFIGDIR in the
build scripts, but for lack of refactoring noise and a catchy
naming scheme let's just leave it where it is.