It allows us to retain the "aux" packages for subsequent rebuilds.
These packages are inserted in the "ports" step and removed in the
"packages" step.
May be subject to changes and tweaks, but works nicely when e.g.
rebuilding suricata.
Build steps for packages predate the .pkg-err file so we had no
way of knowning about the integrity of a build. Now we can
directly check the status of the build.
The side effect is that "make plugins" and "make core" will run
"make ports" if that failed and fail there. While there's a
little overhead in automated scripts this is more consistent with
build flow as we do not start higher targets that depend on broken
dependencies that look correct. This was reported a few times
over the years.
After much discussion and questions, we move to a DVD-ish nomenclature
to indicate that images are likely oversized for a CD. In any case,
the Virtual Machines don't care about this, but users deciding to try
OPNsense might.
Now is the time as the next images are likely going to be for 17.7.
While at it, remove the "everything" target as it now requires
roughly 5G RAM (nano build) and 22G hard disk (default vm build)
in order to work at all. Boy, we have come a long way. ;)
Instead, just offer to build a cdrom image which should not take
up too much hard disk space and RAM as people will likely run
the their own build systems out of specs.
This will not taint the build system except for the final
sets and image dirs. Helps in keeping the build system
clean and that it's easier to inspect the build step.
While there, expand chroot to take a subdir argument as
some build steps need the STAGEDIR root for more than a
single purpose.
common.sh eats up the arguments via getopts, but on return to the parent
script the arguments are restored. To adapt the argument scrubbing to
the actual number of arguments eaten we'll sprinkle a bit of arcane shell
magic around and hope for the best.
o Talking to Shawn Webb revealed that build.conf behaviour is
still fragile. This will properly invoke all build steps with
the variables that are allowed to be overridden.
o Adds an external CONFIG that is allowed to set NAME, VERSION,
FLAVOUR.
o Remove persistent environment awareness.
o Document the whole thing.
There's still some things to do in order to do parallel builds,
but at least now the build scripts can't be poisoned by a changing
config file underneath.
Lots of changes, mostly to merge the cool layout of kernel and base
sets with the packages approach. What happens now is that ports.sh
and core.sh generate a packages set all the time so that it is portable
and can be pushed to a web server too if needed.