Commit Graph

4503 Commits (d592a5bb947ee50b74a39c2d9d979c9653d2d1c8)

Author SHA1 Message Date
Adriaan de Groot bedff6b252 [netinstall] Log immediate failures
- If the request is immediately bad (e.g. because of a botched
   url) then log that fact; in this case no finished() is ever
   emitted.
Adriaan de Groot 82055f6854 [netinstall] Logging; code duplication
- If there was an error, the network reply was never deleted
 - Improve logging to show where data is coming from
Adriaan de Groot 2bb66b8b9b [preservefiles] Example with REQUIRES
- preservefiles generally needs to have the target filesystems
   mounted, so that it can preserve to them; but you can also
   configure it such that there is no need for mounted filesystems
   (e.g. in OEM setup).
 - Add an example line in CMakeLists.txt to show how that would be done.
Adriaan de Groot b0bcdba867 [unpackfs] Needs mount before it
- The mount module must happen before unpackfs because that (mount)
   module sets up the root mount point (in /tmp) and some other
   variables needed later.
Adriaan de Groot c19ce26e5f [libcalamares] Expand GlobalStorage with load()
- Counterpart to save(), for JSON-style dumps
Adriaan de Groot 20cf0c8f3d [libcalamaresui] Remove unused code
- This operator is declared, yet never defined or used. The definition
   was removed in fb44fb97b6.
Adriaan de Groot 58de7cea94 [calamares] Allow test-loading of View modules
The view modules need a QApplication, not just a core application,
and a ViewManager instance, so create those before really loading
the module.
Adriaan de Groot 566be48f16 libcalamaresui: rename and document pastebin method
Adriaan de Groot 2aae30f517 libcalamaresui: don't rely on translations to interpret button
- Keep the debug-failure-call in the code, but commented out
 - Check ButtonRole, rather than the button's text, to see
   which one it is.
Adriaan de Groot 675a35bb2e libcalamaresui: when displaying pasted URL, don't be fancy
- Just call the static method and then quit, rather
   than being careful about allocations.
Adriaan de Groot fac9ccde88 libcalamaresui: document magic constants in question()
Adriaan de Groot 630694b242 libcalamaresui: apply coding style to viewmanager
Adriaan de Groot d49ddf6463 libcalamaresui: factor out the pastebin functionality
- While called from the ViewManager (to post the debug log)
   this isn't really part of the ViewManager itself, so factor
   out the pasting code into its own file.
Adriaan de Groot 8f7d183a0c libcalamaresui: don't always fail
- The paste-branch was merged too soon. Now undoing the damage.
apt-ghetto 0f5ff9a517 Add possibility to set mount options for the ESP
Added new configuration "efiMountOptions" to fstab.conf
When generating the fstab entry for the ESP, take the mount options from
the new configuration or fall back to "mountOptions".
apt-ghetto 8a545941d4 Remove flake8 errors
Remove the flake8 errors. This commit does not change any behaviour.
Calamares CI 08ac97b1ea i18n: [dummypythonqt] Automatic merge of Transifex translations
Adriaan de Groot edd2cc7244
Merge pull request from bill-auger/master
implement post log to paste server (needs some cleanup)
Adriaan de Groot 97384d3839
Merge pull request from bill-auger/job-weights
implement definable job weights
Adriaan de Groot 940c990268 [initcpio] [initramfs] Allow turning off CVE mitigations
- The mitigations are slightly intrusive, and may clash
   with other, similar mitigations (especially for initramfs,
   the recommended solution is to configure the system with
   the snippet outside of Calamares).
Adriaan de Groot a761bf0280 [initramfs] Add tests
- These tests exercise the createTargetFile() logic,
   which is essential for creating a safe initramfs
   configuration snippet.
 - Could be moved into libcalamares instead, since the tests
   are not really initramfs specific.
Adriaan de Groot 76ce0e4f2b [libcalamares] Don't crash when creating System object
- In tests, a System object might be created without first
   setting up a JobQueue. In that case, there's no instance,
   so no GS to insert into. Avoid crash here.
Adriaan de Groot 39d618c61e [initcpio] Simple test for fixPermissions()
Adriaan de Groot 5f6efd2822 [initcpio] Improve security by making initramfs files not world-readable
Adriaan de Groot 1a85435372 [libcalamares] Get target path relative to host /
Adriaan de Groot 43eb664e7d [initramfs] Configure mkinitramfs to be safe
SEE 
Adriaan de Groot b697461497 [libcalamares] Add System::createTargetFile()
- Calamares may need to create files in the target system;
   provide a convenient API for doing so.
 - This is mostly intended for small files with constant contents.
Adriaan de Groot 315e1ac54e [luksbootkeyfile] Improve logging to distinguish from other modules
Adriaan de Groot bb6530577d [initcpio] Replace Python implementation with C++
- This is a simple variation on the theme of things-that-call-a-
   initramfs-updater, so the code is mostly a copy of initramfs/
   module. I didn't even bother to strip out the configuration-
   handling (I figure it might be good for *something*) so now
   "" and "$uname" are valid kernel names as well.
 - Fixes security issue where the initramfs ends up readable
   by all, and that includes the cryptfile for LUKS.

SEE 
Adriaan de Groot d5340f9743 [initramfs] Drop timeout entirely, even two minutes too short
Adriaan de Groot efd409cf78 [luksbootkeyfile] Refactor static function to outside class
Adriaan de Groot 7d7d4c69ef [luksbootkeyfile] Don't log passphrase
Adriaan de Groot 8a7884d476 [luksbootkeyfile] More debugging of the crypt file
Adriaan de Groot 97e44f971d [initramfs] That's not a safety setting
- Don't confuse a method declaration with an object.
 - Thanks clang for warning me.
Adriaan de Groot e2028cf85b [libcalamaresui] Warnings--, no copy constructor for CDebug
Adriaan de Groot 4c5008ecb1 Merge branch 'issue-1190'
SEE 
Adriaan de Groot af2a900276 [luksbootkeyfile] Fix lax permissions on file.
Adriaan de Groot 856a2eaa1d [luksbootkeyfile] Implement keyfile creation and use
- Just copy the commands from the existing Python code,
   including nonsensical dd.
Adriaan de Groot 8706b579ec [luksbootkeyfile] Stub out an implementation
- stubs for the actual work to be done
 - program-flow for looping over all the work
Adriaan de Groot f6c50564cd [luksbootkeyfile] Extract devices that need cryptsetup
- Rename classes and functions to be more descriptive
   (a LuksDevice is .. information for a LUKS device, for instance).
 - Move the smarts of unpacking a QVariantMap to LuksDevice.
 - Apply code formatting
Adriaan de Groot 745b4b1693 [luksbootkeyfile] Extract partitioning keyphrases from GS
Adriaan de Groot 676df86712 [luksbootkeyfile] Stub job implementation in C++
Adriaan de Groot c2fa315735 [luksbootkeyfile] Prepare for C++-ification
- Mess around with the CMakeFile in preparation of new code
 - Drop the Python implementation already
Adriaan de Groot 4825916f09 [branding] Improve log message when slideshow starts
- Having just "component activated" is confusing in the whole
   mess of log messages around job activation.
Adriaan de Groot 91644b4ba2 [libcalamares] Partially fix implementation of timeout
- Adjust most call sites to use std::chrono::duration,
 - Call to QProcess::waitForFinished() needs work, since
   that takes milliseconds.
Adriaan de Groot 938b1ac4aa [libcalamares] Make API more type-explicit with std::chrono
- Having an int timeoutSec is suggestive -- it's probably a number
   of seconds -- but having an explicit type that says it's seconds
   is better.
 - Doesn't compile, because the implementation and consumers have
   not changed.
Adriaan de Groot 1be81ec3b0 [initramfs] Bump the timeout much higher
- Use 120 seconds for update-initramfs, instead of 10. Previous
   Python code had no timeout at all, which wasn't so hot either.
   10 seconds, though, is too short for slow CPU & slow disk.
Adriaan de Groot 0030966986 [initramfs] Set umask before update-initramfs
SEE 
Adriaan de Groot aa3f909be7 [libcalamares] Tests for UMask handling
Adriaan de Groot 0685e3a96c [libcalamares] Move tests of the utils classes into utils/
- while here, adjust include paths (to changed dir)
 - while here, apply new code formatting
Adriaan de Groot 31e78ff0c2 [libcalamares] Add umask helper functions
bill-auger c90d3b2016 squashme WIP upload log to paste server - more error checks and validations
bill-auger e096631c54 squashme WIP upload log to paste server - refactor error checking
bill-auger e7960474d4 implement post log to paste server
bill-auger 9201842025 implement definable job weights
Adriaan de Groot c0cd14df47 [initramfs] Fix sample config file for tests
- the tests want a non-empty config, so put something in there:
   a kernel setting that matches the legacy behavior.
Adriaan de Groot 18bf925a11 [libcalamaresui] Name pending requirements checks
- Give each check a name (based on the module it runs for, so
   there might be overlaps when there are multiple module instances).
 - Log the remaining checks each time the timeout fires, to help
   figure out which one is hanging.
Adriaan de Groot 0bd2bfa708 CI: apply coding style to libcalamaresui/modulesystem
Adriaan de Groot bd8c3fd893 CI: apply coding style to libcalamares/modulesystem
Adriaan de Groot 08b24b9ea2 [libcalamaresui] Fix Doxygen comments
Adriaan de Groot f7cbb7b5ea Changes: Note modified initramfs module
- Also add note about $uname handling.
Adriaan de Groot 6ae8bd82fa [initramfs] Log what kernel will be passed to update-initramfs
Adriaan de Groot a2d7fdcb8a [initramfs] Document settings
- Move the README text into the config file
 - Document the *kernel* setting
Adriaan de Groot 8d712276ad [initramfs] Replace module with C++ implementation
- new implementation handles blank (maps to "all") configuration,
 - allows specifying "$uname" as kernel name, to use `uname -r`,
 - allows specifying a specific kernel.
Adriaan de Groot b216daf574 [initramfs] Prepare for C++-ification
Calamares CI 42bd638667 i18n: [dummypythonqt] Automatic merge of Transifex translations
Adriaan de Groot 5876c3fdd7 [partition] Warn about storage setting in partition.conf
- This is really a specialised setting, not something for
   general use. People should be using `welcome.conf` instead.
Adriaan de Groot 79dc9e3463 [libcalamares] Update button icons as we go along
- Adapt the button icons (previous, next, do-install, all-done)
   to the state of the buttons and the corresponding text.
Adriaan de Groot b3d9af4cae [libcalamaresui] Apply correct button labels
- updateButtonLabels() knows all the special cases for
   buttons, so use it when the language changes instead
   of setting up some possibly-wrong values.
 - One edge case that this fixes is: have **just** the welcome
   page before the first exec section in sequence. Then the
   *next* button label was *next* instead of *install*.
Adriaan de Groot 780fe125f7 [libcalamaresui] Give the buttons icons
- Next, Back, Cancel/Quit have somewhat-appropriate icons.
Adriaan de Groot a5cef2175e [libcalamares] Add tests for the locale service
- Minimal tests just check that all the availableTranslations()
   entries have a reasonable language setting.
 - Checks that Esperanto is still broken as a locale in Qt.
Adriaan de Groot 0f66a89236 [welcome] Only do GeoIP query if it's useful
- If badly-configured, then type is none; this is warned about
   in the constructor of Handler()
 - Only run the query if it's a useful type.
Adriaan de Groot 68dc1f5e31 [libcalamares] Warn about badly-configured GeoIP
- Warn when type will be none
 - Re-order warnings from general to specific
Adriaan de Groot 3967f6c5ae [welcome] Log where GeoIP information came from, if it's unusable
- This helps chase down broken GeoIP configurations, since you
   can check the URL and handler type shown in the log.
Adriaan de Groot 6183c4e2f4 [libcalamares] Add accessors for GeoIP handler attributes
Adriaan de Groot 34b1a250ba [libcalamares] Improve warnings when module descriptor files are bad
Adriaan de Groot 5fdaeaa899 [libcalamaresui] Improve wording when module is missing configuration
Adriaan de Groot e94bbc5e0c [dummyprocess] Add some delay in the dummy
Calamares CI 1d01253249 i18n: [dummypythonqt] Automatic merge of Transifex translations
Adriaan de Groot 1c5a37d7d2 [branding] Add French and Arabic default translations
Adriaan de Groot bba0b7ce12 [branding] Update documentation about API versions
Adriaan de Groot c7d09f06c5 [libcalamaresui] QML Retranslation since Qt 5.10
Adriaan de Groot 79bd7b6b89 Merge branch 'issue-1152'
Adriaan de Groot 58f6635ca0 [libcalamaresui] Force retranslation on language change
Adriaan de Groot f9bd0fba10 [libcalamares] Handle async QML loading
- The component isn't ready immediately, so instatiate
   once it is fully loaded and ready
 - Edge case if the execution view step is already visible, then
   start the show (because a previous call to onActivate() will
   have missed it).
Adriaan de Groot 193bcbde71 [libcalamaresui] Use setSource() for API version 1
- Just avoid all the componentized loading and do the
   synchronous load-compile-setContent thing.
Adriaan de Groot 15ab98cb26 [libcalamaresui] Use API version to load slideshow differently
Adriaan de Groot 148b829591 [libcalamares] Introduce slideshowAPI setting
Adriaan de Groot ef2531b01d [branding] Update documentation
- mention that translations are included
 - point to external repo for fancy/ example.
Adriaan de Groot f3f8f3ea46 [branding] Make the default show nervously quick
Adriaan de Groot 593dcff40a [branding] Enable translations for the default show
- Just translate two simple strings, to avoid burdening translators,
 - Add Dutch translation already.

These translations are not yet processed by ci/txpull and push.
Adriaan de Groot 41c2a7e4e0 [branding] Drop complicated machinery for one subdir
Adriaan de Groot cd7fc93b6a [branding] Be more chatty when slideshow is loaded
Adriaan de Groot 003f37ca04 [branding] Be more chatty in example slideshow
- Log when the timer fires and the slide advances
 - Add a start() function (unused at this moment, will be
   called from C++ at the right time)
Adriaan de Groot 9188eab66f Changes: document new things in slideshow
Adriaan de Groot 075f0787f9 Merge branch 'master' into issue-1152
Adriaan de Groot 71209b323a [libcalamaresui] Call QML methods on start and stop
- Use onActivate() and onLeave() in QML as well, to start and stop
   the slideshow.
Adriaan de Groot 68e6bd676e [libcalamaresui] Instantiate QML at load time
- By instantiating only on activation, an ugly "white" gap
   appears where there is no widget at all. So instantiate
   earlier so that the widget already exists and is painting
   by the time the slideshow part is visible.
 - This makes the net effect of this branch so far zero:
   the slideshow is still loaded and started when Calamares starts.
Adriaan de Groot 5dfc4884b3 [calamares] Increase constness
- The model shouldn't change items at all.
Adriaan de Groot 85845c9b3e [calamares] cLog() isn't a thing, return to cDebug()
Adriaan de Groot a6d7fcdadf [calamares] Reformat the rest of the application
Adriaan de Groot 9235499f7f [calamares] Reformat the progresstree
- add { } to single-line blocks
 - group some includes better
 - lines broken at a different length, some shuffling around of
   parameter lists.
Adriaan de Groot 39675655a0 [calamares] Tidy up include-guard comments
Adriaan de Groot 0d507ec265 [calamares] Tidy up application code
- remove commented code, fix logging around it
 - misplaced include
Adriaan de Groot 74432f698f [partition] Allow the requiredStorage setting to propagate
- store into globalStorage if the welcome module hasn't already done so.
 - this ends up used in PartUtils (via globalStorage).
Adriaan de Groot e6a2cb607f [partition] Add setting for requiredstorage
- If the welcome module isn't used, can set a required amount
   of storage for the installation here.
Adriaan de Groot b5c50c8d04 [partition] Update canBeReplaced
- Use GiB consistently
 - Provide same kind of debugging information as canBeResized()
Adriaan de Groot 79934aa513 [partition] Use GiB consistently in code
Adriaan de Groot 962776804c [libcalamares] Add BytesToGiB (extends BytesToMiB)
Adriaan de Groot acf3dbcdcb [partition] Refactor getting the globalStorage value
Adriaan de Groot 3548792d1b [partition] Improve check canBeResized
- Report the globalSettings name properly (with "GiB")
 - Bail out on bad conversion early.
Adriaan de Groot c233bbb23d [libcalamaresui] Handle no-finished-page scenarios
- From an exec section, next() is called automatically when
   all the jobs in that section are done.
 - If there **is** no next section (e.g. there's no finished
   page to show after the exec), then m_steps.at() would assert
   on an out-of-range index.
 - Introdcuce a helper predicate isAtVeryEnd() which handles both
   out-of-range and normal at-the-end scenarios.
 - If there's no page following the exec section, stay with the
   slideshow but update buttons to match the normal last-page
   behavior, and don't ask about cancel (since we're done).
Adriaan de Groot 4f221b41d1 [libcalamares] Close stdin on process jobs
- This avoids processes that wait on stdin, and e.g. improves
   reaction to having just "cat" (no file) in a command, or
   a package manager that asks for input.
Adriaan de Groot 4e13f780f1 [libcalamares] Expand tests for runCommand
- try both with and without a working-directory set, this would have
   shown up the problem with bad indentation much earlier.
Adriaan de Groot 7be33b8196 [libcalamares] runCommand doesn't need queue or settings
- JobQueue is only needed to get global settings, which are needed
   when running in the target; for host commands, allow running
   without a queue.
 - Settings is needed for the value of debugsettings; assume if
   there's no settings object, that we're in a test and should
   print debugging information.
Adriaan de Groot 5a835f32b8 [libcalamares] Start extending tests to runCommand()
Adriaan de Groot 07a59bd09c [libcalamares] All commands with workingDirectory failed
- This is the same as EFAIL: a block is indented as if it's a multi-
   line else block. This isn't Python though, and the return always
   applies.
 - Add the necessary braces.
 - Apparently noone uses this code path (until ProcessJob was re-
   factored to do so).
Adriaan de Groot d7f5134121 [libcalamares] Be more verbose in error situations
- runCommand can return NoWorkingDirectory in multiple places,
   make sure the log contains a more specific reason.
Adriaan de Groot b587d77e31 [libcalamares] Fix untranslatable string.
- This would substitue an untranslated "in chroot" into the
   translated string, which is weird.
Adriaan de Groot 6055f08aff [libcalamares] Refactor ProcessJob
- Use the system runCommand() instead of a 90% copy of it.
   This **does** change the overall command to `env /bin/sh -c`
   rather than running only `/bin/sh -c`, though.
Adriaan de Groot 92d03c2cf7 [libcalamares] Introduce enum class for special process exit values
- Replace magic numbers like -3 with named enum values
   (NoWorkingDirectory, for -3).
 - Downside is big-ugly static_casts, but that's what you get
   for having an int as return value for processes.
Adriaan de Groot 61b78d8895 [libcalamares] Stop job threads before exit
- This solves a crash where the thread is destroyed while still
   running (e.g. cancelling during install).
 - The thread might not cooperate in being terminated, but then we
   have a bigger problem anyway (and Calamares will still crash on
   exit).

FIXES 
Calamares CI bbc0edecd3 i18n: [dummypythonqt] Automatic merge of Transifex translations
Adriaan de Groot 3335c2003e [fsresizer] Fix tests
- Again? The checks on the job name (using filesystem or device
   name) all looked very bogus, unless it was previously not
   setting them at all.
Adriaan de Groot 2b5cf9e613 [libcalamaresui] There is code in Qt for setting up QML widgets
- The not-publicly documented setContent() method does all the
   parenting and resizing needed; some of this isn't available
   from outside of the widget either.

The QML slideshow now sizes and re-sizes correctly.
Adriaan de Groot f52d62034b [libcalamaresui] Manual QML loading trickery
- The slideshow item needs a parent to be visible,
 - QML gets size 0,0 unless explicitly sized to the surrounding widget.
Adriaan de Groot 103decab68 [libcalamaresui] Create the slideshow on activation
- Load QML on startup, compile async
 - Create QML component when the page is reached.
 - On leave, stop the slideshow (otherwise, e.g. timers will keep running)

This should move some of the delay from loading a large
slideshow forward as the engine is already initialized when
we reach the install / slideshow page.
Adriaan de Groot daf2e55246 [branding] Be more chatty in example slideshow
- Log when the timer fires and the slide advances
 - Add a start() function (unused at this moment, will be
   called from C++ at the right time)
Adriaan de Groot ff03235e33 [libcalamaresui] Load QML on startup
Adriaan de Groot 5973dbf74c [libcalamaresui] Shuffle code for QML slideshow
- Create widgets earlier
 - Group layouting code
 - Add retranslator only once, not on every activate
 - Load QML only once, preferably at activation
Adriaan de Groot cbe14bbf03 [libcalamaresui] Rename m_slideShow -> m_qmlShow
- It could be any QML, so it's not a slideshow per se.
 - Minor prep-work for fixing up loading times.
Adriaan de Groot f54b7dee9f [welcome] Use convenience image loader from Branding
Adriaan de Groot 07c638ed48 [welcome] Allow theming the international language-select icon
Adriaan de Groot 75ce391e7e [libcalamaresui] Add branding-aware function for loading image by name
Adriaan de Groot 1438729b72 [libcalamaresui] Do filename checks more sanely
- check directory exists before trying to open file from it
 - re-use the componentDir already found for later tests.
Adriaan de Groot 69dabcae32 [libcalamares] Avoid static destructor
- The static destructor issues a warning on exit:
       QBasicTimer::start: QBasicTimer can only be used with threads
       started with QThread
   so instead, heap-allocate the model. This leaks memory, but
   it's a singleton *and* we're exiting anyway.
Adriaan de Groot a263381996 [partition] Avoid an assert when running Calamares as user.
Adriaan de Groot 4a6b9f3528 [partition] Call update from init() in BootLoaderModel
- update() (might) add some extra rows for boot and root,
   which otherwise vanish temporarily when calling init.
Adriaan de Groot d5f0bdd28c [partition] Simplify negative logic
- Instead of multiple continue statements to avoid negative cases,
   state the one positive case instead.
Adriaan de Groot 3bdbfe6bff [partition] Avoid crash if combobox is gone and model resets
- Since the lambda is connected to the model only, it should
   check that the target combo exists as well.
Adriaan de Groot 2ce2b08027 [partition] Indent lambdas to tab-stop.
- Lambdas are all over the place in this codebase, formulate
   a standard and start adjusting code to it in passing.
Adriaan de Groot 353e713f81 [partition] Complain loudly on dangling Partition pointers
- Don't crash if a bad pointer gets into colorutils.
Adriaan de Groot 2bc95d11d3 [partition] Unrelated typo in comment
Adriaan de Groot f1f5b6c1bb [partition] Restore BootLoader path in Choice Page
- after model resets, restore what was previously selected.
 - This avoids having an **empty** combobox, SEE  but does
   not actually set it back to the value the user had previously
   picked (e.g. changing swap settings **still** breaks the
   selection).
Adriaan de Groot 0ebabfafd4 [partition] Move BootLoaderModel convenience functions
- These were hidden inside PartitionPage, but are useful elsewhere.
Adriaan de Groot 8d451622db [partition] Idiomatic use of Calamares::JobList
Adriaan de Groot e2b71e669e [partition] When running UNSAFE, no-install-partition is a warning
Adriaan de Groot 95009a5222 [libcalamaresui] Fix disable-cancel behavior
- d78bc0c5 added an early `return false` when cancel is disabled,
   before checking if we were at the last step; so last-step
   didn't get any special handling.
 - refactor so that last-step now gets special handling first,
   **then** disable-cancel handling, and then the usual case.
Adriaan de Groot 0c24a01eb9 [finished] Improve logging of restart mode
- Don't use weirdly-named mode, store named mode in page,
 - Log the actual mode name when setting up the restart button.
Adriaan de Groot 38c36e2439 [finished] Use idiomatic Calamares::JobList
Adriaan de Groot 1915547004 [finished] Improve logging when restarting.
Calamares CI 644aade0f5 i18n: [dummypythonqt] Automatic merge of Transifex translations
Adriaan de Groot 2e39f24bb0 [libcalamaresui] Make sure finished() is processed once
- Avoid races which might double-delete the timer, or enter
   the if twice (which would lead to duplicate emissions of
   requirementsComplete and the associated UI glitches).
Adriaan de Groot 2b91608b82 [libcalamaresui] Avoid requirements-results UI duplication
If the requirements checking is **really fast**, e.g. you don't
have a check for internet connectivity, then the checks
might be done as fast as the 0-timeout single-shot timer,
which means that finished() is called once by the QFutureWatcher,
and then after that by the QTimer .. leading to two messages
"All requirements have been checked", but also twice
requirementsComplete being emitted, so you end up with two
results lists being added by the CheckerContainer.

Stop that by using the results-progress timer as an additional
flag: the first time everything is complete, delete that timer
and set the pointer back to nullptr.
Adriaan de Groot f64e55f0dc [libcalamaresui] Use meaningful asserts
- In debug mode, hitting assert(false) is meaningless,
 - In release mode, the assert is optimized out.
 - So assert the condition we're actually testing, for better messages.
Adriaan de Groot 976ad7e3e7 [libcalamaresui] Look up icons via theme
- Don't cache icons, because they could be changed via
   the active desktop theme.
Adriaan de Groot 822bbaad9c [libcalamaresui] Allow icon names in branding images
- It's ok to use path / filenames in images, but you can also
   use icon names according to the FDO icon spec. This makes
   sense for at least *productLogo*, possibly *productIcon*, but
   not really for *productWelcome*.
Adriaan de Groot b41cac6556 [interactiveterminal] Warn when called in exec: context
FIXES 
Adriaan de Groot 7f5e61480b [calamares] Once the steps are loaded, activate the first view step
- Using next and back buttons calls onActivate() on the view step
   that you end up on.
 - The first view step to be shown, though, doesn't get an onActivate()
   (unless you go, say, next and then back).
 - Explicitly call onActivate() on the first view step once they're
   all loaded.

FIXES 
Adriaan de Groot 36fe3ed188 [packages] Add -Su --noconfirm
- When updating the system (-Su) it may want to install newer
   packages; it asks for confirmation before doing so.

FIXES 
Adriaan de Groot c741470b60 [calamares] Name the debug button for styling purposes
Adriaan de Groot cd38ded8d5 [libcalamaresui] Support os-release substitutions in images
- Branding images might want to use os-release data as well.
 - Refactor a little to keep the number of #ifdefs the same;
   an intermediate expand() lambda handles expansion (or not,
   if it's not enabled).

FIXES 
Adriaan de Groot 368e7aac16 Merge branch 'issue-1149'
Adriaan de Groot 18b111218a [libcalamaresui] Sort includes in DebugWindow.cpp
Adriaan de Groot ac941e6756 [libcalamares] Implement reload-stylesheet
- From the debug-window, clicking *reload stylesheet* does just
   that, and applies the new stylesheet to the Calamares window.
 - Remove stylesheet caching from the Branding class; we only
   need the sheet once (on Calamares startup) or when updating
   the stylesheet, which is seldom-enough that we don't need
   to keep an extra copy around.
 - To use, start Calamares, open the debug window, open stylesheet.qss
   in an editor. Make changes, save, then click *reload stylesheet*.

SEE 
Adriaan de Groot 877cb0e999 [libcalamaresui] Debug-tool to dump widget tree
- Adds another tool to the debug window, which dumps (to the debug
   log) a tree-like view of all the widgets in the application.
   This can be used when writing stylesheets.
Adriaan de Groot b5625fc14d [libcalamares] Add a reload-stylesheet button
- This is a debugging-option to test stylesheet changes quickly.
 - Right now, the stylesheet is cached, so it doesn't even work.
Calamares CI a1f7cb4f49 i18n: [dummypythonqt] Automatic merge of Transifex translations
Adriaan de Groot ee3a2bcbe8 CMake: tidy
- remove weird message about debugging updates
 - add some space after the QML dirs information
Adriaan de Groot 38485f675c [branding] In the stylesheet, mention how styling works
SEE 
Adriaan de Groot 6a7c2f541e [branding] Mention the stylesheet in the docs
Adriaan de Groot a30edb194a [branding] Update branding.desc with new os-release feature
- Point to supported keys on the fd.o site
 - Point out need for quoting
 - Update example with "@{NAME}" for the window-title
Adriaan de Groot af73d90b7b [libcalamaresui] Fix build with KOSRelease
- initialization of the hash was all wrong
 - special-case ID_LIKE
 - typo's
 - link to CoreAddons
Adriaan de Groot fbbbe63642 [libcalamaresui] WIP: Use KOSRelease and KMacroExpander in branding
- allows you to use -- at runtime -- values from os-release in the
   branding file.
 - WIP because the only machine I have with sufficiently new KF5
   is the FreeBSD box.
Adriaan de Groot 92d0e71029 [libcalamaresui] one more refactor for string-loading
- Do the checking for IsMap inside loadStrings() and use
   YAML::Exception to get to bail() (since we're already dealing
   with exceptions here, no extra costs). This tidies up the code
   somewhat.
Adriaan de Groot 667f78c016 [libcalamaresui] if there's a YAML exception in branding, bail
- all kinds of type errors result in bailing out, but a totally
   broken branding file does not?
Adriaan de Groot 62328c9940 [libcalamaresui] images-strings loading fixed
- move the string-munge into a lambda and use the generic loadStrings()
Adriaan de Groot 544d905b2f [libcalamaresui] WIP: refactor again
- the string-manipulation can be done through a lambda. That makes
   handling *strings* and *styles* simple.
 - still doesn't compile.
Adriaan de Groot 5a126816f4 [libcalamaresui] WIP: refactor copying strings from config to Branding
- this is mostly to make the constructor easier to read by
   moving parts of the story to easily-understood methods.
 - doesn't actually compile.
Adriaan de Groot 5bae7b7b52 [libcalamaresui] check for sufficiently-new KF5CoreAddons
- From 5.58, KOSRelease is available (not used yet, though)
Adriaan de Groot a9f3b4050c [libcalamaresui] don't over-complicate PythonQt library linking
Adriaan de Groot 0c4d77541f [plasmalnf] simplify KF5-finding
- No need to double-up package finding.
Adriaan de Groot 1cf3ac810a [calamares] avoid extra defines for KCrash
- Don't need an extra indirection from WITH_KF5Crash to WITH_KCRASH,
   just use the cmakedefine directly.
 - Since the setting is only used in main.cpp, move the define
   down there and remove cmakedefine entirely.
Adriaan de Groot 81c4114de9 welcome: disable geoip by default (and document how)
FIXES 
Adriaan de Groot f3bfc81e52 [libcalamares] Rename dontCancel to disableCancelDuringExec
- This way the name actually refers to what it does, rather
   than being a somewhat ambiguous overload of disableCancel.
Adriaan de Groot a5cba02769 [calamares] Leave a note about changing close-window hint
Adriaan de Groot 2208ff95fe [calamares] Simplify disable-window-close-button code
Adriaan de Groot d4f4a40fa5 [libcalamaresui] Refactor quit-enabling
- Add signal for change-of-quit-enabledness
 - Minor tidying
Adriaan de Groot 088fa5004c [libcalamaresui] Disallow closing the window during execution
- If the disable-cancel-during-exec setting is on, and the user clicks
   the window-close button, then disregard the close message.
Adriaan de Groot ad4352b65c [libcalamaresui] Make stepIsExecute() more general
- Checking if the **next** step is an execute-step is a little
   weird, so make the API more general (and add the +1 to indexes
   where it was using NextWillExecute before).
Adriaan de Groot 25099ae854 [libcalamaresui] Remove duplicate setEnabled
- If executing is set to true, then later setEnabled( !executing && ... )
   fill be false, so we don't need to call setEnabled( false ) here as well.
Adriaan de Groot 5868657101 [calamares] Hide the window-close decoration when disable-cancel is set
Adriaan de Groot d78bc0c5c5 [libcalamaresui] When disable-cancel is on, never confirm
- This function is also reached by clicking the window-close decoration.
Adriaan de Groot 34ffc7a20a [libcalamares] Consistent namespace usage in partition service
- The sub-directories under libcalamares (e.g. Utils, ..)
   all live in namespace CalamaresUtils (well, except for Logger).
   The services (e.g. subdirs other than utils/) live in their
   own nested namespace, so partitioning should go into
   CalamaresUtils::Partition for consistency.
Adriaan de Groot e520c66bb9 [fsresizer] Give the FSResizerJob some accessors
- This is primarily for the tests: then they can drop the
   #define private public hack and be "proper" consumers.
Adriaan de Groot 80606cc38d [partition] Reduce test warnings through consistent signedness
Adriaan de Groot 7e12b65c94 [partition] Silence warnings about missing vtable
Adriaan de Groot 81715ba199 [partition] Warnings-- by using nullptr instead of 0
Adriaan de Groot 54108d2bab [partition] Fix up logging of jobs
- Logging `*it` was printing raw pointers, logging (plain) `it`
   needs the specialized logging `operator<<` to DTRT with temporaries.
Adriaan de Groot fd4bc4bb17 [partition] Avoid UB by initializing size everywhere
Adriaan de Groot bffaf47900 [partition] Reduce warnings about integer size
Adriaan de Groot 10ba468748 [libcalamares] Avoid warnings / errors on both gcc and clang
- Clang 8 can detect that there is no need for a return if all
   previous paths already return. GCC 8 does not. Clang warns if
   the unreachable return is there, GCC errors out if it isn't.
 - Introduce a hack NOTREACHED that comments-out on Clang, and
   marks as unreachable (but still present) on GCC.
 - This might go away with an [[unreachable]] annotation or
   similar.
Adriaan de Groot ed3eafbc2d [oemid] Reduce warnings about vtable by adding virtual destructor
Adriaan de Groot 6db09f0679 [libcalamares] Handle all SizeUnit cases inside switch
- Although None will be filtered out already by unitsComparable(),
   include it in the switch to avoid a warning .. then we can
   drop the post-switch return since the switch covers all possible
   values of the enum.
Adriaan de Groot 90975b62bf [libcalamares] Tidy PartitionSize
- Use unitsComparable where applicable
 - Use SizeUnit instead of unit_t -- since this is a template
   specialization, we have the more meaningful type name to
   use, instead of the generic one.
Adriaan de Groot 72e1a36752 [libcalamares] Update partition service tests
- Use long so that 2GiB fits in the values
 - Document special case of 0[KMG]iB
Adriaan de Groot 7a368dc1d7 [libcalamares] Add tests for the partitioning service
Adriaan de Groot 93a68c3d5f [libcalamares] Add convenience method to check for unit-comparability
- Not all kinds of units are comparable. Introduce a method
   in PartitionSize to check for comparability (this could
   also be a free method, but seems more tidy here because it
   is specifically about comparing in the context of partition sizes).
Adriaan de Groot d048975f15 [libcalamares] One more nested namespace
Adriaan de Groot 0b0fb93e75 [libcalamares] Remove redundant default: in case
- the switch handles all values of the enum and the compiler should
   be smart enough to know that (therefore default isn't needed,
   nor the return afterwards).
Adriaan de Groot 2c94cbdb14 [libcalamares] namespace A::B is a C++17 extension
Adriaan de Groot 7302b9c851 [libcalamares] Fix nested namespaces
- Declaring namespace A::B is a C++17 extension, and Calamares
   is C++14. Split the namespace declarations.
 - While here, fix extra const warning as well.
Adriaan de Groot 859e95432e [partition] Handle all enum values in the switch
Adriaan de Groot 3b0d778d1e [partition] Mention that reuse-swap isn't supported now
Adriaan de Groot 8fcdbd5bd5 [libcalamaresui] Improve warning message
- Tell the packager / deployer that certain modules are missing
Kevin Kofler ec7c5a4611 [bootloader] Fix sb-shim mode to write grub.cfg into the ESP
src/modules/bootloader/main.py (install_secureboot): Run the configured
grubMkconfig command (should be `grub-mkconfig` or `grub2-mkconfig`) to
create `/boot/efi/EFI/$efi_bootloader_id/grub.cfg`. The sb-shim is just
a chainloader to GRUB 2, which expects a grub.cfg in that location, so
something has to create it or the installed system will not boot beyond
the GRUB rescue shell.
(install_grub): Fix misleading comment above the grubMkconfig call: it
is not the file specified in grubCfg that should be already filled out
by the grubcfg job module, that file is written by `grub*-mkconfig`
using `/etc/default/grub` as the input file. It is that input file
`/etc/default/grub` that should already be filled out by the grubcfg job
module. (The same input file is used in install_secureboot.)
Adriaan de Groot 255f1e85a8 [fsresizer] Fix tests
- These are obvious mismatches between the tested-configuration
   and the assertions -- e.g. "71MiB" being tested for percents.
Adriaan de Groot e972c175d8 [bootloader] Fix typo's
- There's a general "partititon" typo, but the variable
   name also is misused.
Adriaan de Groot 23ae6b77bd [bootloader] Convert to str
- The output of subprocess is a bytes object, which needs to
   be decoded so we can use it like a regular string (alternatively,
   we could have changed more code to manipulate bytes, but eventually
   we need a string to pass to a subsequent command anyway).
Adriaan de Groot 9bf1d83c2f [bootloader] Centralize the filename sanitizer
- Centralize the sanitizer so that it's consistent in different
   environments.
 - While here, add () to the sanitizer to avoid some distro's with
   parenthesized names from creating weird EFI dirs.
Adriaan de Groot f18f9dcd14 [welcome] Lookup GeoIP language and pass to language widget
- FIXES 
 - Whether this is really wanted depends on the distro, and I'm not
   100% convinced the likely tags from Unicode are correct (or it'd
   take a lot more data). In any case, starting Calamares in "NL"
   gets me "nl_NL" as translation; presumably starting it in "BE"
   will get me that as well (what about Les Wallons?)
 - This also shows off that it's a real hack to have so much program
   logic in the *widget* parts of each ViewStep. Longer-term,
   a lot of functionality should go to the ViewStep itself, which
   will then control the UI.
Adriaan de Groot 03f88b3ed6 [libcalamares] Support looking up translation by 2-letter country
- Looks for an available translation by 2-letter country code
   and returns the row for it.
Adriaan de Groot 1857952431 [libcalamares] Add convenience accessor for translations
- Which translations are available is a global property
   of Calamares itself, not of the plugins, so getting
   the model of available translations should live there.
   Move the relevant code (which is simple) from the
   Welcome module.
Adriaan de Groot 76b45a2740 [libcalamares] const-data retrieval is const for LabelModel
Adriaan de Groot 18ed4c74ef [libcalamares] Move more into the locale service
- Use namespace CalamaresUtils::Locale consistently for this service.
 - Move locale-related non-GUI support code from the Welcome module
   to libcalamares; these are generally useful. Both Label (naming a locale)
   and LabelModel (managing a bunch of those Labels) have been moved.
Adriaan de Groot b490e30a5e [welcome] Use the new locale lookup after GeoIP gets a 2-letter code
Adriaan de Groot 81499b22a1 [libcalamares] Fix build of tests
- Link Qt::Xml publicly because the tests will need it as well.
Adriaan de Groot 69f05bd34a Merge branch 'master' into shuffle-geoip
Adriaan de Groot 2a448c057d [welcome] Provide API for updating the country
- Changing country will pre-select the language most likely
   for that country (it doesn't, yet, since we don't have the data).
Adriaan de Groot b51e22b520 [libcalamares] Implement locale lookups for 2-character codes
Adriaan de Groot 0dfef34160 [libcalamares] Add generated locale data tables
Adriaan de Groot 529d93c58f [libcalamares] Add the first locale-data C++ infra
- Lookup country data based on enum or 2-letter code
 - No data yet, so return only stubs
 - The (generated) data tables are not listed as sources because
   they are #include'd by the API implementation; they're full of
   otherwise-unused static tables, so don't make sense to compile
   separately.
 - While here, tidy up the CMakeLists a bit to reduce the number
   of superfluous variables.
Adriaan de Groot 07a9052fca [libcalamares] Also output size of locale-tables
Adriaan de Groot bf5ce44bd1 [libcalamares] Tidy up the CLDR script, add license, make more pythonic
Adriaan de Groot 2a5d99be50 [libcalamares] Start on a locale-data subdirectory
- Continuing the notion that libcalamares should provide
   (non-GUI) services for modules, add a locale service.
 - This will, unfortunately, roughly duplicate Qt's QLocale
   database, but in a form that is public and more readable.
Adriaan de Groot cb7c38daba [welcome] Support GeoIP country lookup
Adriaan de Groot 44559d24bd [libcalamares] Selector wasn't saved for later queries
Adriaan de Groot 4ea29b1cf1 [libcalamares] Implement "raw" handling
Adriaan de Groot 9931b2df44 [libcalamares] Add "raw" support for extracting data from GeoIP
- This is prep-work for getting something other than the
   timezone (e.g. most extended formats also support Country).
Adriaan de Groot bbd2afc20f Merge branch 'issue-1129'
FIXES 
Adriaan de Groot 53230d73e2 [partition] Replace user-visible MB with MiB
Adriaan de Groot b08de96315 [partition] Comment w/ MiB instead of MB
Adriaan de Groot 707ec98553 [partition] Tidy labels view
- Use MiB terminology and support code
 - Remove debugging chattiness
 - Fix up include style
Kevin Kofler ecc32ab9b6 [mount] Update copyright notice
Adriaan de Groot 50857dcfec [partition] Fix tests to use "MiB" terminology
Kevin Kofler 34083344a4 mount: copy the SELinux context of the host directory to the mountpoint
On systems with SELinux enabled, we have to create the directories on
top of which we mount another partition or virtual file system (e.g.,
/dev) with the correct SELinux context, BEFORE we mount the other
partition. Otherwise, SELinux will get really confused when systemd
tries to recreate the mount tree for a private file system namespace for
a service. And unfortunately, even an autorelabel does not fix it
because it runs when /dev etc. are already mounted.

Without this fix, on Fedora >= 30, the system installed with Calamares
would fail to start the dbus-broker system bus, leading to several
important pieces of functionality not working (e.g., shutdown as
non-root).

On systems without SELinux enabled, chcon (which is part of coreutils)
will just print a warning and do nothing, so this should always be safe.
Adriaan de Groot f25b1528a5
Merge pull request from a-wai/factor-partsize-class
Move partition size classes into libcalamares
Arnaud Ferraris eb57be1be8 [partition] Remove deprecated sizeToSectors() function
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Arnaud Ferraris 80fd3d3353 [partition] Switch to using the generic PartitionSize class
Instead of relying on a module-specific implementation, use the new
PartitionSize class for storing partition sizes.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Arnaud Ferraris 8f9f8f1cc1 [fsresizer] Switch to using the generic PartitionSize class
Instead of relying on a module-specific implementation, use the new
PartitionSize class for storing partition sizes.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Arnaud Ferraris 4937668b5b [libcalamares] Add generic PartitionSize class
Using PartUtils::PartSize as reference, this commit creates a new
PartitionSize class in libcalamares, which will then be used in every
module needing such a class.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Arnaud Ferraris 36bc0e6308 [partition] Move bytesToSectors() to CalamaresUtils namespace
In order to prepare for future refactoring of the PartSize class, move
the bytesToSectors() function to libcalamares in the CalamaresUtils
namespace.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Arnaud Ferraris bfd46276ad [libcalamaresui] Fix sidebar label for setup mode
In the sidebar, the "Install" step should be named "Set Up" when in
setup mode, which will be more consistent with the other UI texts,
including button labels.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Adriaan de Groot 9331a25905 [libcalamares] Remove Typedefs.h
- This small header file contained a few unrelated typedefs.
   Move those typedefs to the classes they relate to. This
   **does** mean that some consumers need to #include something
   else instead.
 - Use type names more consistently.

Editorial: why are **pages** responsible for creating the jobs?
Adriaan de Groot a99eccf19d [libcalamaresui] Fix PythonQt code w/ moved enums
Adriaan de Groot f60ac5e101 [modules] The modules can include libcalamares and libcalamaresui
- Remove (heavy-handed) top-level include_directories, in favor
   of more focused ones; this helps to make sure that the dependencies
   ordering is correct.
Adriaan de Groot 16ff8b0767 [fsresizer] Make dependency on partition module more explicit
Adriaan de Groot a482d7be44 [libcalamaresui] Don't expose build details in DebugWindow
- In a library class, don't include uic-generated headers inside
   the public headers.
Adriaan de Groot de2b85eabf [libcalamaresui] Tidy the CMake bits
- Explain (briefly) what the library is for
 - Explicitly add includes from the non-UI library
Adriaan de Groot 0be34d281d [libcalamares] Remove incorrect comment
- The setting for OEM mode is already independent.
Adriaan de Groot cdb613bf02 [libcalamares] Move module-related things into subdirectory
- Currently just moves a single enum, but this is prep-work for
   moving the non-GUI parts of the module system into libcalamares,
   to better support GUI-less operation.
Adriaan de Groot 761205ecf7 [libcalamares] Tidy some bits
- Explain what the library is for (briefly) in the CMakeLists
 - Settings should use the right export macro
Adriaan de Groot 169159f888 [libcalamaresui] Switch to enum classes for Type, Interface
- Somewhat gratuitous change, but brings more enums into modern style.
Adriaan de Groot 6b89ac8461 [libcalamaresui] Remove TODO
- I don't know what this would mean, so it's not a TODO any more.
Adriaan de Groot d3783ef293 [partition] Use GiB and MiB consistently
Adriaan de Groot 502d43d111 [welcome] [partition] Rename GlobalStorage variable used for storage
- Change name passed into GS to use "GiB" instead of "GB", for
   consistency. This needs to be done in consumers as well.
Adriaan de Groot 599b34c70e [welcome] Rename GB variable to GiB
- User visible string with GiB
 - Update documentation in welcome.conf to match code
 - Rename variable because it was always GiB just named wrong
Adriaan de Groot 30a306f1b4 [welcome] Make check consistent with verbiage
SEE 
Kevin Kofler a01d4707e1 [partition] Do not unmount /dev/mapper/live-* in ClearMountsJob
src/modules/partition/jobs/ClearMountsJob.cpp
(ClearMountsJob::getCryptoDevices): Skip not only `/dev/mapper/control`,
but also `/dev/mapper/live-*`. Fedora live images use
`/dev/mapper/live-*` internally. We must not unmount those devices,
because they are used by the live image and because we need
`/dev/mapper/live-base` in the `unpackfs` module.
Kevin Kofler 71d991e2e4 [unpackfs] Do not use `-o loop` on a device
src/modules/unpackfs/main.py (UnpackOperation.mount_image): Check
whether entry.source is a regular file or a device and only use
`-o loop` on regular files, not devices.

At least on Fedora >= 29, `-o loop` fails on the read-only device
`/dev/mapper/live-base` (though `-o loop,ro` would be accepted).
Kevin Kofler 02c7fe8345 [umount]: Fix default srcLog in umount.conf
Also fix the introductory comment, which also contained the old
location.
Adriaan de Groot f7494864be [calamares] Tidying after fixing fit-text-in-sidepane
- Simplify delegate: unused m_parent, tidy up inheritance, then drop
   unnecessary custom constructor and extra Q_OBJECT macro.
 - Drop some unnecessary included headers
 - Drop single-use #define. APP was used in only one place; remove it
   (that would be stylistically correct, anyway).
 - Update copyright headers
 - Document new label-handling
Adriaan de Groot dc8cfd2fce [calamares] Fit text into sidepane
- Shrink the font in an attempt to fit into the box,
   but only up to 4pt smaller; after that just clip on one line.
Adriaan de Groot 0f30acc13f [calamares] Fix off-center text in sidepane
- The text rectangle was **moved**, not shrunk-in-place. Add
   the missing - sign for the right and bottom margin.
 - While here, move from #define to constexpr.
Adriaan de Groot fdc2cff65a [calamares] Keep text on a single line
- In the sidepane, don't wrap long texts
Adriaan de Groot 44107d6c33 [finished] Actually read the new-style config value
Adriaan de Groot f3c86810a1 [finished] More (display) modes for restarting
- Use a named enum instead of a collection of booleans
 - Support old-style configuration but complain about it
 - Update AppImage config as well

The new setup allows four different restart modes: never,
always, user-unchecked and user-checked. The user-modes
are interactive and give the user a choice (defaulting to
unchecked-don't-restart and checked-do-restart respectively).
The non-interactive versions vary in how they are
displayed.
Adriaan de Groot e281a74552 [finished] Fix up include guards and include style
Adriaan de Groot d6c7e53966 [finished] Warnings should be logged as such
Adriaan de Groot ef4196dbd8 [finished] Simplify configuration code
Adriaan de Groot 8774b605fa [locale] Update to use newer configuration
- deprecate the old entries
 - use a geoip sub-map for GeoIP configuration
 - polish up documentation
 - drop mention of blank and "legacy" styles for GeoIP config,
   just update your URLs already.
Adriaan de Groot 7899ab83f9 [libcalamares] Remove convenience API
Adriaan de Groot 44cbb0d374 [libcalamares] Drop alternate-config handling for GeoIP
- Dealing with legacy formats and alternate configurations
   is something that consumers should do (and then hand off
   to the 3-string constructor) instead.
Adriaan de Groot fc76313ea6 [libcalamares] Implement GeoIP Handler config from map
- read map entries with alternate keys
 - delegate to other constructor
Adriaan de Groot d5fe86c394 [libcalamares] Use NamedEnum for named-enum wrangling
Adriaan de Groot 5f01a8ccc5 [oemid] If the configuration is broken, complain loudly
- Adds an InvalidConfiguration value for internal errors

SEE 
Adriaan de Groot e0a79f4c0f [partition] Reduce scope for nullptr dereference
- document what types are in use
 - avoid at least one nullptr deref
Adriaan de Groot f1ddd0c233 [welcome] Simplify configuration code
Adriaan de Groot 25d97efe48 [locale] Use GeoIP Handler instead of own implementation
Adriaan de Groot 2f2adb3623 [libcalamares] Implement async GeoIP::Handler::query()
- do this the cheap way by splitting the synchronous API into a
   free function and then calling that through QtConcurrent.
Adriaan de Groot 84a759a591 [libcalamares] Emphasise that GeoIP::Handler::get() is synchronous
- prep-work for also having an async API
Adriaan de Groot ee6e8de31a [libcalamares] Disable broken GeoIP providers
- The tests were querying broken or disabled GeoIP providers,
   so remove them (this leaves only very few reliable free providers).
Adriaan de Groot 1da580f43d [libcalamares] Implement Handler's synchronous query()
- Steal code from existing tests for a synchronous HTTP get,
   then hand it off to the handler.
 - Extend tests with Handler interpreting the same data.
Adriaan de Groot 9bc8d28800 [libcalamares] Shuffle GeoIP into a namespace
- Use CalamaresUtils::GeoIP for GeoIP code
 - Name the public interface parts generically, while the
   implementation details retain GeoIP<foo> names.
Adriaan de Groot 16413e7bdb [libcalamares] Stub GeoIPHandler
- The handler class should deal with configuration and query
Adriaan de Groot 26b61a4ddb [libcalamares] Make RegionZonePair type stronger
- Derive from QPair instead of being QPair
 - Add isValid() for checking
 - Convenience constructors
Adriaan de Groot 73a5e7dd62 [libcalamares] Put GeoIP in namespace
- Use consistent include-guard style
 - Put things in namespace CalamaresUtils
Adriaan de Groot ce909f00cc [libcalamares] Drop unnecessary HAVE_XML
- Linking to QtXml gives us a -DQT_XML_LIB already, so use that.
Adriaan de Groot a1b1ebcd29 [locale] Compile with moved GeoIP handling
Adriaan de Groot 9ed46fc275 [libcalamares] [locale] Adjust CMakeLists to moved code
Adriaan de Groot 7ec7278fd3 [libcalamares] [locale] Move GeoIP code to the library
Adriaan de Groot dd33848975 [oemid] Tweak layout some more
Adriaan de Groot 6b137d6fd2 CMake: don't reset project() in a subdir
Adriaan de Groot a01262a535 CMake: massage dependency-finding
- If KPMCore is not found, don't require the KF5 components
   that it would depend on.
 - If ECM is found, use KDEInstallDirs always, not just when
   the partitioning module is used.
Adriaan de Groot 2620829515 [webview] Make optional based on presence of dependencies
Adriaan de Groot ea95913be9 [oemid] Expand documentation a little.
Adriaan de Groot 127c425a9a [oemid] Write batch-identifier into standard file location
Adriaan de Groot 2b12bd82e4 [oemid] Stub of a Job
- Create job, run it, and just debug-log what it should do.
Adriaan de Groot 1df726fc1d [oemid] Add summary widget text
Adriaan de Groot 672634547b [oemid] Tweak UI layout
Adriaan de Groot e510c829e1 [oemid] Add form explanation
Adriaan de Groot ae85381aae [oemid] Initial version of UI
Adriaan de Groot 96828c1df0 [oemid] Handle substitution in config-string
Adriaan de Groot 7d8b122835 [oemid] New module, stub
- OEMID is a module for configuring phase-0 things for an OEM,
   like batch-ID. This is just a stub.
 - Currently planned functionality is limited to just batch-ID.
Adriaan de Groot 8d0f076591 [libcalamares] Rename CalamaresUtils -> String
- The only remaining functions in the file are string-related, so
   rename to match their purpose.
 - Drop this include file from most places, since they don't actually
   use the string functionality at all.
Adriaan de Groot eaba696173 [libcalamares] Move the crash() function to the one place it's used
Adriaan de Groot 66c4445077 [libcalamares] Move translation-related functions to Retranslator.h
Adriaan de Groot ac095d9ed0 [libcalamares] [libcalamaresui] [calamares] Adjust to moved Dirs.h
Adriaan de Groot 50694ef610 [libcalamares] Split dirs-functionality into separate file
Adriaan de Groot 2907b48844 [libcalamaresui] Move RESPATH #define to the one place it's used
Adriaan de Groot 432b8848ab [libcalamares] Make #include guards consistent
Adriaan de Groot f076dd76ad [libcalamares] Rename YamlUtils.h
- Since we have the utils/ filesystem namespace, and use CalamaresUtils::
   as C++ namespace, simplify naming.
Adriaan de Groot 090aee9196 Modules: adjust to split-out utils/Variant.h
- Most modules only needed the variant support, not the "whole"
   CalamaresUtils header.
 - While here improve ordering of headers as well.
Adriaan de Groot 6e0e06078b [libcalamares] Split out the variant-manipulation bits
- We already have utils/ as the filesystem namespace, may as well
   make clearer what the various parts are.
 - Adjust CommandList to the moved API.
Adriaan de Groot 3e011d1419 [libcalamares] Don't link with PythonQt
- PythonQt is only needed (and used) from the GUI library.
Adriaan de Groot d2dd4fd76b Modules: Improve error reporting
- Remaining modules [networkcfg] [openrcdmcryptcfg] [rawfs] with
   code that throws on bad configuration. Replace with meaningful
   error messages, to better check cases of SyntaxError &c.
Adriaan de Groot 7d0874e23b [mount] Bail on bad config
- One might argue whether an empty list of partitions to mount is
   a bad thing. It suggests that the partition module wasn't used,
   and so we're in an OEM situation -- but then everything should
   already be mounted anyway. That's why I choose empty -> bail.
Adriaan de Groot ec0fe2ccd3 Modules: Improve error reporting
- [initcpio] remove superfluous inner function
 - [initcpio] catch errors from mkinitcpio itself and report them in a nice
   readable format.

 - Save translators the effort of doing a dozen messages
   with just the name of the module changed. All of these modules
   bail out on bad configurations with a meaningful message.
   - [initcpiocfg]
   - [fstab]
   - [initramfscfg]
   - [localecfg]
   - [luksbootkeyfile]
   - [luksopenswaphookcfg]

 - [machineid] Warn on bad config. It's conceivable that this is run
   with an empty rootMountPoint (i.e. "") to modify the running system,
   so only bail on None.
Adriaan de Groot 1f7dfafe9a [libcalamares] Provide accessor to error code.
- Document meaning of error codes.
 - The test-loader considers internal errors a real (test) failure,
   while errors returned normally by the modules (e.g. because the
   configuration is broken) to be ok for testing purposes.
Adriaan de Groot 7149b80146 [libcalamares] Distinguish kinds of errors
- errors can now carry an integer what-am-I code apart from
   the message; all errors have a code != 0 (and ok has code 0).
Adriaan de Groot b8be07573b [initramfs] Fix syntax error
Adriaan de Groot e072b76fea [shellprocess] [contextualprocess] Unneeded module.desc
- C++ modules should have a CMakeLists.txt which does the
   right thing, e.g. calamares_add_plugin() , and don't need
   a textual module.desc
Adriaan de Groot 6f9548af34 CMake: Check module interfaces
- Only allow meaningful interface strings
 - Improve documentation of which interfaces work for
   which module types.
Adriaan de Groot f8bc40ba91 [calamares] (test-app) loadmodule exit code 1 on failures
- If the module fails to load, or runs with an error, exit
   with code 1.
Adriaan de Groot 9700359cab [calamares] In (test-app) loadmodule, log failure as error
- Errors were being logged as debug output, which is normally
   hidden (e.g. unless -D6 is passed to turn on debugging).
Adriaan de Groot cf08e59501 [localecfg] Add missing import
Adriaan de Groot ca3110d429 [partition] Drop extra ; (warnings--)
Adriaan de Groot e8264a4503 [partition] Prefer GPT on EFI systems for new partition table
Adriaan de Groot a68a381481 [license] Fix compiler warnings
- out-of-order and incomplete initialization
 - documentation style
 - missing assignment operator
Adriaan de Groot 516b3b4b6c [partition] Adjust to logging-API changes
- missed due to #ifdef on a KPMcore API version I don't have on
   my main workstation.
Adriaan de Groot 3ddb49afb7 Merge branch 'issue-1061'
FIXES 
Adriaan de Groot 74d42fe229 [summary] Tidy scrollbar handling
- Handle different window-expansion strategies
Adriaan de Groot 3533bb3c2d Merge branch 'master' into issue-1061
Adriaan de Groot 52f824289e Changes: document license module changes
- also document applicable stylesheet ids
Adriaan de Groot 3ab9c0efdf Merge branch 'issue-1052'
FIXES 
Adriaan de Groot 58770037f4 [license] Allow more things locally
- If it says file:, it's local (don't require a specific file
   extension).
 - Report actual path loaded.
Adriaan de Groot ca870a6d41 [license] Update example
- Explain that the GPLv3 isn't actually a proprietary license, but
   is used as convenient text for the license page.
 - Invent a Calamares, Inc.
Adriaan de Groot 3608f62ec0 [license] Adjust tooltip and button texts
- Handle various states of the link and tool buttons,
   give them appropriate texts and tooltips.
Adriaan de Groot 4ce6fdbd90 [license] Make area scrollable
- Since the list of license entries may be long (especially
   if the text is expanded) make it scrollable.
Adriaan de Groot f0d26a74b7 [license] Set object names
- This is prep-work now that the CSS styling branch has merged