This should really happen as late as possibly and possibly not at all. If
we change (lock) the password too soon, then some build steps can fail.
For example, adduser will fail if root needs to change its password first.
So that means we don't have to uninstall eudev and replace it with systemd.
Also apparently we need to set the machine-id as it doesn't appear to exist
in the stage3 and I think installing systemd (which we don't do anymore)
does it for you.
The line that was including the appliance-specific config had a typo. The
typo was overlooked all this time because no appliance really uses this
feature. Until now...
By setting the VABUILDER_OUTPUT Makefile variable, one can have images
and packages saved to and retrieved from that directory instead of the
default (CURDIR). This can be use to, e.g., have different profile's
builds in different directories (instead of having to give images
different filenames, etc.).
Instead of calling passwd twice, one to delete the root password and one
to expire it, simply call it once and pass --delete and --expire to the
same command.
The stage4 target, specifically the STAGE4_TARBALL target now depends on
the portage/ directory, the appliances/<appliance>/ directory and the
stage3 tarball. It will not be rebuild if these are up-to-date. Therefore
other targets that depend on stage4 (e.g. RAW_IMAGE) won't force stage4 to
be rebuilt if it is up to date.
If you want to force a stage4 rebuild, for example if the appliance pulls
from a live VCS, then the recommended way to do this is:
$ touch appliances/<appliance>
$ make APPLIANCE=<appliance> stage4
Instead of "image" so that if the raw image is built and up-to-date then it
need not be rebuilt to satisfy the other image targets. This excludes the
stage4 "image" which of course is necessary to build the $(RAW_IMAGE)
target.
The raw image making was kind of split up, with different targets to create
the image, partition, copy files, install grub, etc. This change makes it
all one target. After "make image" is done, or, e.g., "make images/base.img"
then the resulting file will be built and contain all the necessary files.
This make the $(RAW_IMAGE) target more uniform with the other image/
targets. It will also make the other image/ targets easier to satify.
The new (2015-02) stage3 tarballs use package.* directories instead of
files, causing the files to fail to be copied over. This change instead
copies them to the directories, creating them if they don't already exist.