Commit Graph

442 Commits

Author SHA1 Message Date
Adriaan de Groot
e6b55a1f70 [libcalamares] Code-formatting Sync.* 2019-06-20 13:53:02 +02:00
Adriaan de Groot
e59b3e8bf5 [libcalamares] Add unmount helper function 2019-06-20 13:52:36 +02:00
Adriaan de Groot
add90e873b [libcalamares] Provide overload of runCommand()
- Most of the time the working dir and stdin are not important,
   you just want to run a command in the host, so simplify that
   by providing a suitable overload.
 - Use that overload from the partition service (for mount and sync).
2019-06-20 11:52:51 +02:00
Adriaan de Groot
93eb712824 [libcalamares] After mount, sync to make sure things are settled 2019-06-20 11:38:08 +02:00
Adriaan de Groot
d08325d3d0 [libcalamares] Move mount to the partition service
- Move mount() out of CalamaresUtils::System and into
   the partitioning service.
 - Adjust PythonJobApi (only consumer of that service).
2019-06-20 11:35:46 +02:00
Adriaan de Groot
2c399d4494 [libcalamares] Add settle / sync support method 2019-06-19 12:14:49 +02:00
Adriaan de Groot
5e352c6771 [libcalamares] Mark KPM support API as such
- Some of these classes are only compiled in when KPMcore is found.
2019-06-19 09:07:04 +02:00
Adriaan de Groot
3bd77913f7 Merge branch 'master' into kpmcore-manager 2019-06-19 08:52:31 +02:00
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.
2019-06-18 15:27:59 +02:00
Adriaan de Groot
68dc1f5e31 [libcalamares] Warn about badly-configured GeoIP
- Warn when type will be none
 - Re-order warnings from general to specific
2019-06-18 12:33:56 +02:00
Adriaan de Groot
6183c4e2f4 [libcalamares] Add accessors for GeoIP handler attributes 2019-06-18 12:17:25 +02:00
Adriaan de Groot
5c6c67a974 [libcalamares] Destroy jobs once they have run 2019-06-15 17:45:01 +02:00
Adriaan de Groot
1962bbf08d [libcalamares] Compute length of JobQueue just once
- Calculate the length once at the start -- this is because
   future work will modify the queue rather than just iterating
   over it.
 - Describe the slightly-surprising progress-percentage calculation.
2019-06-15 13:38:51 +02:00
Adriaan de Groot
2cffe2ec1a [libcalamares] Move debugging to more useful spot
- Count the KPMManagers as they are created
2019-06-15 12:51:31 +02:00
Adriaan de Groot
8e4a2b3543 CMake: Handle KPMCore version better
- provide complete information for feature_summary
 - set the right API version when building libcalamares
 - report the beta version number when it's wrong
2019-06-14 23:57:07 +02:00
Adriaan de Groot
d0d017f5fe [libcalamares] Add convenience backend() to KPMManager 2019-06-13 23:39:06 +02:00
Adriaan de Groot
a01539b664 [libcalamares] Fix memory ownership of KPMManager
- The InternalManager object should have at most one living
   instance at a time.
 - getInternal() hands out shared_ptr<>s to the one living instance,
   or creates a new one.
 - The creation of a new InternalManager shouldn't count as a reference
   to it, and it mustn't be deleted after the shared_ptr<>s have done
   their work.
 - So static shared_ptr<InternalManager> was the wrong choice,
   since that leads to double deletes.
 - While here, be a little more chatty when loading KPMCore.
2019-06-13 23:38:50 +02:00
Adriaan de Groot
1674c81e9c [libcalamares] Add query for kpmcore status 2019-06-13 23:38:50 +02:00
Adriaan de Groot
7adbc8cda6 [libcalamares] Add KPMCore manager
- This handles cleaning up KPMCore on exit
2019-06-13 23:38:50 +02:00
Adriaan de Groot
8eb04a082e [libcalamares] Move FS-related code to partition service
- only moves one function right now, providing user-visible
   name for filesystem name.
2019-06-13 14:55:43 +02:00
Adriaan de Groot
a7a3c4f2d8 [libcalamares] Unused include 2019-06-13 14:51:13 +02:00
Adriaan de Groot
93742a8efe [libcalamares] Reformat new code in partition service 2019-06-13 14:47:44 +02:00
Adriaan de Groot
4b3bb54320 [libcalamares] Move partition-finding into libcalamares
- Moved from KPMHelpers to the partition service
 - The is-partition and find-partition methods that make sense
   in general, are moved to libcalamares.
2019-06-13 14:41:33 +02:00
Adriaan de Groot
ca9f21d805 [libcalamares] Refortmat the partition service 2019-06-13 12:35:32 +02:00
Adriaan de Groot
8885611ae3 [libcalamares] Fix build with non-namespaced KPMCore types 2019-06-13 12:27:21 +02:00
Adriaan de Groot
d8dc512f45 [libcalamares] Move PartitionIterator to partition service.
- Starting to centralize utility code for partitioning into
   libcalamares instead of scattered and weirdly shared between
   modules.
 - This particular commit breaks compiling the modules, though.
2019-06-13 12:12:47 +02:00
Adriaan de Groot
962776804c [libcalamares] Add BytesToGiB (extends BytesToMiB) 2019-06-07 23:01:18 +02:00
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.
2019-06-07 16:11:54 +02:00
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.
2019-06-07 16:00:37 +02:00
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.
2019-06-07 15:53:27 +02:00
Adriaan de Groot
5a835f32b8 [libcalamares] Start extending tests to runCommand() 2019-06-07 13:56:16 +02:00
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).
2019-06-07 13:37:46 +02:00
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.
2019-06-07 13:32:31 +02:00
Adriaan de Groot
b587d77e31 [libcalamares] Fix untranslatable string.
- This would substitue an untranslated "in chroot" into the
   translated string, which is weird.
2019-06-07 12:40:20 +02:00
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.
2019-06-07 12:30:38 +02:00
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.
2019-06-07 12:10:22 +02:00
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 #1164
2019-06-07 11:46:08 +02:00
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.
2019-05-31 12:38:34 +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
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
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
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
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