Commit Graph

4102 Commits

Author SHA1 Message Date
Calamares CI
644aade0f5 i18n: [dummypythonqt] Automatic merge of Transifex translations 2019-05-28 12:56:23 +02:00
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).
2019-05-27 17:15:49 +02:00
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.
2019-05-27 17:10:21 +02:00
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.
2019-05-27 15:38:37 +02:00
Adriaan de Groot
976ad7e3e7 [libcalamaresui] Look up icons via theme
- Don't cache icons, because they could be changed via
   the active desktop theme.
2019-05-27 15:35:56 +02:00
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*.
2019-05-27 15:26:57 +02:00
Adriaan de Groot
b41cac6556 [interactiveterminal] Warn when called in exec: context
FIXES #1157
2019-05-27 14:57:28 +02:00
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 #1156
2019-05-27 14:38:27 +02:00
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 #1154
2019-05-27 14:06:05 +02:00
Adriaan de Groot
c741470b60 [calamares] Name the debug button for styling purposes 2019-05-23 13:30:37 +02:00
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 #1153
2019-05-21 17:12:00 +02:00
Adriaan de Groot
368e7aac16 Merge branch 'issue-1149' 2019-05-21 13:36:18 +02:00
Adriaan de Groot
18b111218a [libcalamaresui] Sort includes in DebugWindow.cpp 2019-05-21 13:35:58 +02:00
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 #1149
2019-05-21 13:21:47 +02:00
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.
2019-05-21 13:07:34 +02:00
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.
2019-05-21 12:52:50 +02:00
Calamares CI
a1f7cb4f49 i18n: [dummypythonqt] Automatic merge of Transifex translations 2019-05-21 12:17:16 +02:00
Adriaan de Groot
ee3a2bcbe8 CMake: tidy
- remove weird message about debugging updates
 - add some space after the QML dirs information
2019-05-21 12:14:47 +02:00
Adriaan de Groot
38485f675c [branding] In the stylesheet, mention how styling works
SEE #1149
2019-05-21 12:11:55 +02:00
Adriaan de Groot
6a7c2f541e [branding] Mention the stylesheet in the docs 2019-05-21 12:07:52 +02:00
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
2019-05-20 23:07:10 +02:00
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
2019-05-20 22:54:54 +02:00
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.
2019-05-20 22:11:11 +02:00
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.
2019-05-20 17:03:32 +02:00
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?
2019-05-20 17:03:28 +02:00
Adriaan de Groot
62328c9940 [libcalamaresui] images-strings loading fixed
- move the string-munge into a lambda and use the generic loadStrings()
2019-05-20 17:03:17 +02:00
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.
2019-05-20 17:03:17 +02:00
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.
2019-05-20 17:03:08 +02:00
Adriaan de Groot
5bae7b7b52 [libcalamaresui] check for sufficiently-new KF5CoreAddons
- From 5.58, KOSRelease is available (not used yet, though)
2019-05-20 17:03:04 +02:00
Adriaan de Groot
a9f3b4050c [libcalamaresui] don't over-complicate PythonQt library linking 2019-05-20 17:02:59 +02:00
Adriaan de Groot
0c4d77541f [plasmalnf] simplify KF5-finding
- No need to double-up package finding.
2019-05-20 17:02:54 +02:00
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.
2019-05-20 17:02:47 +02:00
Adriaan de Groot
81c4114de9 welcome: disable geoip by default (and document how)
FIXES #1148
2019-05-16 22:49:27 +02:00
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.
2019-05-14 08:30:34 -04:00
Adriaan de Groot
a5cba02769 [calamares] Leave a note about changing close-window hint 2019-05-14 14:07:33 +02:00
Adriaan de Groot
2208ff95fe [calamares] Simplify disable-window-close-button code 2019-05-14 14:03:53 +02:00
Adriaan de Groot
d4f4a40fa5 [libcalamaresui] Refactor quit-enabling
- Add signal for change-of-quit-enabledness
 - Minor tidying
2019-05-14 13:43:07 +02:00
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.
2019-05-14 13:21:05 +02:00
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).
2019-05-14 13:18:51 +02:00
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.
2019-05-14 13:10:36 +02:00
Adriaan de Groot
5868657101 [calamares] Hide the window-close decoration when disable-cancel is set 2019-05-14 13:06:54 +02:00
Adriaan de Groot
d78bc0c5c5 [libcalamaresui] When disable-cancel is on, never confirm
- This function is also reached by clicking the window-close decoration.
2019-05-14 13:04:24 +02:00
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.
2019-05-14 05:52:58 -04:00
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.
2019-05-14 05:29:19 -04:00
Adriaan de Groot
80606cc38d [partition] Reduce test warnings through consistent signedness 2019-05-14 05:29:19 -04:00
Adriaan de Groot
7e12b65c94 [partition] Silence warnings about missing vtable 2019-05-14 05:29:19 -04:00
Adriaan de Groot
81715ba199 [partition] Warnings-- by using nullptr instead of 0 2019-05-14 05:29:19 -04:00
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.
2019-05-14 05:29:19 -04:00
Adriaan de Groot
fd4bc4bb17 [partition] Avoid UB by initializing size everywhere 2019-05-14 05:29:18 -04:00
Adriaan de Groot
bffaf47900 [partition] Reduce warnings about integer size 2019-05-14 05:29:18 -04:00
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.
2019-05-14 05:29:18 -04:00
Adriaan de Groot
ed3eafbc2d [oemid] Reduce warnings about vtable by adding virtual destructor 2019-05-13 14:08:30 +02:00
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.
2019-05-13 13:54:09 +02:00
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.
2019-05-13 13:44:30 +02:00
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
2019-05-13 13:38:30 +02:00
Adriaan de Groot
7a368dc1d7 [libcalamares] Add tests for the partitioning service 2019-05-13 13:33:38 +02:00
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).
2019-05-13 13:32:14 +02:00
Adriaan de Groot
d048975f15 [libcalamares] One more nested namespace 2019-05-13 13:06:28 +02:00
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).
2019-05-13 12:34:19 +02:00
Adriaan de Groot
2c94cbdb14 [libcalamares] namespace A::B is a C++17 extension 2019-05-13 12:34:19 +02:00
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.
2019-05-13 12:23:41 +02:00
Adriaan de Groot
859e95432e [partition] Handle all enum values in the switch 2019-05-13 12:23:19 +02:00
Adriaan de Groot
3b0d778d1e [partition] Mention that reuse-swap isn't supported now 2019-05-12 16:34:57 +02:00
Adriaan de Groot
8fcdbd5bd5 [libcalamaresui] Improve warning message
- Tell the packager / deployer that certain modules are missing
2019-05-12 16:29:50 +02:00
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.)
2019-05-12 16:11:35 +02:00
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.
2019-05-10 19:00:11 -04:00
Adriaan de Groot
e972c175d8 [bootloader] Fix typo's
- There's a general "partititon" typo, but the variable
   name also is misused.
2019-05-10 18:26:59 -04:00
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).
2019-05-10 15:35:00 -04:00
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.
2019-05-10 15:28:37 -04:00
Adriaan de Groot
f18f9dcd14 [welcome] Lookup GeoIP language and pass to language widget
- FIXES #934
 - 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.
2019-05-10 15:02:12 -04:00
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.
2019-05-10 14:44:54 -04:00
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.
2019-05-10 12:07:24 -04:00
Adriaan de Groot
76b45a2740 [libcalamares] const-data retrieval is const for LabelModel 2019-05-10 12:07:24 -04:00
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.
2019-05-10 11:46:20 -04:00
Adriaan de Groot
b490e30a5e [welcome] Use the new locale lookup after GeoIP gets a 2-letter code 2019-05-10 11:03:01 -04:00
Adriaan de Groot
81499b22a1 [libcalamares] Fix build of tests
- Link Qt::Xml publicly because the tests will need it as well.
2019-05-10 10:57:50 -04:00
Adriaan de Groot
69f05bd34a Merge branch 'master' into shuffle-geoip 2019-05-10 08:04:36 -04:00
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).
2019-05-10 07:53:44 -04:00
Adriaan de Groot
b51e22b520 [libcalamares] Implement locale lookups for 2-character codes 2019-05-10 13:46:35 +02:00
Adriaan de Groot
0dfef34160 [libcalamares] Add generated locale data tables 2019-05-10 13:14:52 +02:00
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.
2019-05-10 13:14:52 +02:00
Adriaan de Groot
07a9052fca [libcalamares] Also output size of locale-tables 2019-05-10 13:14:51 +02:00
Adriaan de Groot
bf5ce44bd1 [libcalamares] Tidy up the CLDR script, add license, make more pythonic 2019-05-10 13:06:55 +02:00
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.
2019-05-10 11:49:44 +02:00
Adriaan de Groot
cb7c38daba [welcome] Support GeoIP country lookup 2019-05-09 15:15:03 -04:00
Adriaan de Groot
44559d24bd [libcalamares] Selector wasn't saved for later queries 2019-05-09 15:09:58 -04:00
Adriaan de Groot
4ea29b1cf1 [libcalamares] Implement "raw" handling 2019-05-09 10:40:51 -04:00
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).
2019-05-09 10:15:53 -04:00
Adriaan de Groot
bbd2afc20f Merge branch 'issue-1129'
FIXES #1129
2019-05-09 08:14:25 -04:00
Adriaan de Groot
53230d73e2 [partition] Replace user-visible MB with MiB 2019-05-09 08:13:58 -04:00
Adriaan de Groot
b08de96315 [partition] Comment w/ MiB instead of MB 2019-05-09 08:00:23 -04:00
Adriaan de Groot
707ec98553 [partition] Tidy labels view
- Use MiB terminology and support code
 - Remove debugging chattiness
 - Fix up include style
2019-05-09 07:58:20 -04:00
Kevin Kofler
ecc32ab9b6 [mount] Update copyright notice 2019-05-09 13:52:13 +02:00
Adriaan de Groot
50857dcfec [partition] Fix tests to use "MiB" terminology 2019-05-09 07:51:35 -04:00
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.
2019-05-09 13:50:31 +02:00
Adriaan de Groot
f25b1528a5
Merge pull request #1144 from a-wai/factor-partsize-class
Move partition size classes into libcalamares
2019-05-09 13:32:15 +02:00
Arnaud Ferraris
eb57be1be8 [partition] Remove deprecated sizeToSectors() function
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-05-08 19:31:41 +02:00
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>
2019-05-08 19:31:20 +02:00
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>
2019-05-08 19:31:01 +02:00
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>
2019-05-08 19:30:33 +02:00