Now all the business logic is in Config, the door is open to
building a QML-ified netinstall module. I'm not sure that
would be worth it: packagechooser offers more space for a
nice UI and should be QML'ed first.
- both clang and g++ support __builtin_unreachable(); (as Kevin
Kofler pointed out) so we don't need the macro to do different things;
- the compilers have gotten better at detecting unreachable code,
so instead of inserting macros or fiddly bits, just drop them
and the unreachable code they comment.
- point to main Calamares site in the 'part of' headers instead
of to github (this is the "this file is part of Calamares"
opening line for most files).
- remove boilerplate from all source files, CMake modules and completions,
this is the 3-paragraph summary of the GPL-3.0-or-later, which has
a meaning entirely covered by the SPDX tag.
When one of these common names for the netinstall page is used,
it gets pulled out of the standard translations, so that it
doesn't have to be translated in the per-distro config file.
These labels are common enough that they make sense for
everyone to have lying around.
FIXES#1367
(I say "fixed" but of course it's going to depend on the translation
workflow to make these available)
- For a static list of selectable packages (e.g. what you might otherwise
use file:/// for with a static file on the ISO) you can now stick the
list in the config file itself, simplifying some setups.
- Also saves faffing about with network.
SEE #1319
- Now that multiple netinstall pages may be supported, it's annoying
that they all have the same name. Copy the approach from other
modules (e.g. notesQML) of having the sidebar and other labels
configured in the config file.
- Since operations are added each time you leave this page,
the existing operations (from a previous visit) need to be
cleaned up. With the old setup of only **one** possible
set of operations, this wasn't a problem. Now, merging
in operations is necessary. Implement that by looking for
the *source* property in an operation.
FIXES#1303
- These methods are used for multi-page view-steps, which are rare.
For all the others, just drop the empty implementation and defer
to the base class.
- Document netinstall.conf a little,
- Add setting *required* which influences whether next is enabled or not
in case of missing or corrupt data,
- Enable *next* button only once some (any!) data is received.
This can be used to disallow stepping past the netinstall step when
there is no data (e.g. internet has failed between the welcome page
and the netinstall page).
- If there's no scripts involved in a package for netinstall, just
name it without the scripts; this lets the packages module
optimize to fewer package manager calls.
- Each element of the (list) packageOperations needs to be a
package operation, which is a dictionary with keys (identifying actions)
and lists of packages (which may be strings or script-info dictionaries).
Package groups are divided into critical and non-critical
depending on whether we want all Calamares to fail if installing
a package in the group fails, or we are okay with just logging a
warning.
The distinction is configured in the YAML file listing the package
groups. By default, all groups are critical, to keep supporting
the previous behaviour.