Commit Graph

681 Commits

Author SHA1 Message Date
Adriaan de Groot
66ee6ac673 [libcalamares] Fix tests for umask != 022
- My usual test environment has umask set to 022, but on one dev
   box it is 002, leading to test failures (which show the test
   was bad, not that the umask-setting code is bad)
2019-08-30 06:35:53 -04:00
Adriaan de Groot
9053b9cecf [libcalamares] Fix Qt 5.9 compatibility
- not really sure why I went for the Qt 5.10 STL-style iterators

FIXES #1236
2019-08-30 06:20:45 -04:00
Adriaan de Groot
f1971eed86 [libcalamares] Support calling a slot on retranslation
- sometimes a slot is easier than a lambda. Introduce
   a macro CALAMARES_RETRANSLATE_SLOT that calls a given
   slot in an object on language change.
 - extend the retranslator with support for calling slots:
   - use Qt's signal/slot mechanism alongside the private
     list of functions to call
   - provide convenience for obtaining the retranslator of
     an object.
2019-08-29 14:53:03 +02:00
Adriaan de Groot
eb21c90861 [libcalamares] Avoid implicit 0-to-flags conversion
- clang complains about using 0 as a Flags value, so make the
   default (empty) initialization explicit.
2019-08-26 21:42:27 +02:00
Adriaan de Groot
6fb909a799 Merge branch 'networking-service' 2019-08-26 15:49:09 +02:00
Adriaan de Groot
a1b0049bbf [libcalamares] Use more readable names 2019-08-26 15:41:30 +02:00
Adriaan de Groot
e2c6591a77 [libcalamares] Refactor request internals
- distinguish timeouts from other failures
 - git synchronousPing() a more detailed result, which is
   still bool-compatible.
2019-08-26 15:24:58 +02:00
Adriaan de Groot
f0be7fd4aa [libcalamares] Make failures in the internal methods obvious
- internally, timeout and error will return nullptr
2019-08-26 14:43:41 +02:00
Adriaan de Groot
87ea14f68a [libcalamares] Drop INTERFACES again
- The compile failure came from bad #include paths, so restoring
   this interface declaration wasn't a fix.
 - Reported to cause runtime failures on both KaOS and Manjaro.
2019-08-26 10:15:22 +02:00
Adriaan de Groot
ededebbc6c [libcalamares] Return reply early if the request is bad 2019-08-24 15:23:07 +02:00
Adriaan de Groot
d422c782ba [libcalamares] Correct include path
- no need for the subdirectories, and this confuses MOC

Reported-by: Jonathan Riddell
Fix-by: Harald Sitter
2019-08-23 17:15:51 +02:00
Adriaan de Groot
85f0d38698 [libcalamares] Refactor synchronous get
- Add timeout support
 - Refactor into a static helper method
2019-08-23 14:59:35 +02:00
Adriaan de Groot
1f2b3b734d [libcalamares] Extend synchronous API with options 2019-08-23 12:18:59 +02:00
Adriaan de Groot
af1aa701bc [libcalamares] Shuffle namespace lines around
- put all the definitions inside namespace {} to avoid
   needlessly long source lines.
2019-08-23 12:09:30 +02:00
Adriaan de Groot
8ea1ea6662 [libcalamares] Add synchronousGet() to network service
- Synchronous download of a given URL; not something to
   do from the GUI thread.
 - Use it from the GeoIP service, which downloads in a
   separate thread to do GeoIP lookups.
 - Drop now-unused headers.
 - Adjust tests for GeoIP to use network service
2019-08-22 16:11:26 +02:00
Adriaan de Groot
0b2855d6e0 [libcalamares] Fix build (bad class name) 2019-08-22 10:29:39 +02:00
Adriaan de Groot
9aae9b2f02 [libcalamares] Restore Q_DELCARE_INTERFACE
- This **may** be the cause of build failures on aarch64.
2019-08-22 10:26:15 +02:00
Adriaan de Groot
310a1d76cf [calamares] Reduce warnings now that getInteger is qint64 2019-08-22 10:25:16 +02:00
Adriaan de Groot
eae931f2ed [libcalamares] Ping only when accessibility is unknown
- Restores exact functionality of previous version
   (noted by Kevin Kofler)
 - Short-circuit ping if the URL is bad.
2019-08-21 03:43:51 -04:00
Adriaan de Groot
4389c254df [libcalamares] Rely directly on QNAM's networkAccessible() 2019-08-20 10:57:34 -04:00
Adriaan de Groot
11d52df04c [libcalamares] Add API docs to network service 2019-08-20 10:57:34 -04:00
Adriaan de Groot
82622373bc [libcalamares] Remove superfluous ; (warnings--) 2019-08-20 16:05:22 +02:00
Adriaan de Groot
8d3530154f [libcalamares] Expand network service test
- Do an actual ping (also to check for memory leaks)
2019-08-20 09:57:04 -04:00
Adriaan de Groot
b8d56bb4a6 [libcalamares] Add tests for network service 2019-08-20 09:52:11 -04:00
Adriaan de Groot
d7602df51e [libcalamares] Introduce networking service
- The networking service is intended to wrap up use of
   QNetworkAccessManager and others for consumption within
   Calamares, and to provide some convenience functions
   for internet access.
 - Medium term, it may also monitor network access, so that
   we can respond to changes in network availability during
   installation.

Currently very minimal and undocumented.
2019-08-20 09:52:11 -04:00
Adriaan de Groot
7b699bfc76 [libcalamares] Access list of locale Ids
- Make it easier to obtain locale-ids (from CALAMARES_TRANSLATION_LANGUAGES)
   so avoid splitting that string multiple times.
2019-08-20 05:26:26 -04:00
Adriaan de Groot
f31ff8b9ea [libcalamares] Apply coding style to PluginFactory 2019-08-13 20:50:52 +02:00
Adriaan de Groot
ccd707b23a [libcalamares] Apply coding style
- .. or, rather, avoid re-formatting tables in future.
2019-08-13 20:49:58 +02:00
Adriaan de Groot
09a36cd669
Merge pull request #1221 from a-wai/add-base-10-sizes
Add 'base 10' partition size multiples
2019-08-13 20:26:22 +02:00
Arnaud Ferraris
a51d612afa Revert "libcalamares: Align partition sizes on actual sectors"
This reverts commit 40202705ff.
2019-08-13 16:57:47 +02:00
Adriaan de Groot
1d047839c7
Merge pull request #1220 from a-wai/prevent-int-overflow
Prevent integer overflow when parsing configuration
2019-08-13 16:21:35 +02:00
Arnaud Ferraris
40202705ff libcalamares: Align partition sizes on actual sectors
Currently, the `bytesToSectors()` function rounds a partition size to the
nearest MiB unit, which may lead to inconsistencies when a partition
is expected to only be a few KiB's.

This patch changes the behaviour of `bytesToSectors()` so that it aligns
on sector size, without rounding the partition size to a multiple of
1MiB.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-08-12 15:55:18 +02:00
Arnaud Ferraris
209e8331b7 libcalamares: Add support for KB/MB/GB size units
Currently, all size units are expressed as KiB, MiB or GiB (resp. 2^10,
2^20 or 2^30).

In order to maximize compatibility and consistent results with other
partitioning tools, this commit adds support for sizes expressed as KB,
MB or GB (resp. 10^3, 10^6 or 10^9).

This change won't affect existing users, it simply adds a new option
that wasn't previously handled.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-08-12 15:55:18 +02:00
Adriaan de Groot
0716a46eb2 [libcalamares] Switch to using KPluginFactory
- this is not entirely straightfoward, since  we need
   different constructor arguments for the objects
   Calamares creates (no QVariantList& args, in particular).
   Implement our own registerPlugin() and createInstance()
   for that.
 - work around a bug in K_PLUGIN_FACTORY_DECLARATION_WITH_BASEFACTORY
2019-08-12 15:52:59 +02:00
Arnaud Ferraris
3929557a5a welcome: Fix requirements parsing
As the config files integer are now of type `QVariant::LongLong` instead
of `QVariant::Int`, requirements relying on this type were not parsed
correctly.

This patch fixes this, and adds an option to the python conversion to
take into account `QVariant::LongLong` types.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-08-12 15:48:48 +02:00
Arnaud Ferraris
0d06e047ae libcalamares: Prevent integer overflows when parsing configuration
Currently, a number of configuration parsing-related functions and
classes use only `int` type for dealing with integers. Should the user
need a bigger integer value, this would result in an erroneous value
being used (`0`), as the correct value would overflow the 32-bits type.

In order to prevent these overflow, this patch replaces `int` with
`qint64` in the following functions & classes :

  * CalamaresUtils::yamlScalarToVariant()
  * CalamaresUtils::getInteger
  * NamedSuffix
  * PartitionSize

This way, sizes or other integer values greater than 2^31 (for signed
types) can be used.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-08-12 15:45:34 +02:00
Adriaan de Groot
1711071c58 [libcalamares] Swap out own PluginLoader for KCoreAddons 2019-08-12 13:24:53 +02:00
Adriaan de Groot
41173360a7 [libcalamares] We're just testing file modes, not whole int range 2019-08-09 16:36:38 +02:00
Adriaan de Groot
6f73151786 [libcalamares] Reduce warnings
- Although milliseconds::count() is long long, we pass it to
   a Qt interface that only takes int; let's assume we have
   only a 32-bit count, since a timeout of 4 billion milliseconds
   is roughly 46 days, which we'll just call "no timeout".
2019-08-09 16:22:22 +02:00
Adriaan de Groot
419329ee49 [libcalamares] Remove friend, add accessor, make includes explicit 2019-08-09 06:27:13 -04:00
Adriaan de Groot
2166eb4511 [libcalamares] [libcalamaresui] Adjust for moved sources 2019-08-08 10:47:14 -04:00
Adriaan de Groot
e7c66de4df [libcalamares] Move kdsingleapplicationguard to 3rdparty 2019-08-08 10:24:18 -04:00
Adriaan de Groot
115f5bfd82 [libcalamares] Apply coding style to remainder of geoip/ 2019-08-08 12:41:41 +02:00
Adriaan de Groot
ec073ee188 [libcalamares] Apply coding style to geoip/ 2019-08-08 12:32:21 +02:00
Adriaan de Groot
6e9f1be9e9 [libcalamares] Don't reformat string tables in GeoIP 2019-08-08 11:56:20 +02:00
Adriaan de Groot
81fa1735b1 [libcalamares] Apply current coding style 2019-08-07 23:43:45 +02:00
Adriaan de Groot
6b659b6f48 [libcalamares] Apply current coding standard to locale/ 2019-08-07 23:42:33 +02:00
Adriaan de Groot
251e16e72c [libcalamares] Allow en_US locale for tests as well 2019-08-07 12:31:52 +02:00
Adriaan de Groot
4febe477cf [libcalamares] Add isEmpty() to TranslatedString
- Massage the implementation a bit, don't insert a meaningless
   copy of the key as the untranslated message.
 - Add isEmpty() to check for presence of the untranslated message.
 - Document API.
 - Update tests.
2019-08-06 11:53:35 +02:00
Adriaan de Groot
6a8e10837d [libcalamares] Drop unneeded debugging 2019-08-06 00:26:04 +02:00
Adriaan de Groot
fd75b33784 [libcalamares] Add default constructor to TranslatedString 2019-08-06 00:17:30 +02:00
Adriaan de Groot
39b7e4c55f Merge branch 'translatable-configuration' 2019-08-06 00:07:48 +02:00
Adriaan de Groot
764c775f08 [libcalamares] Tighten tests, add special case
- The tests should be run in C locale, otherwise the plain get()
   function uses the current locale, which will fail (e.g. running
   LANG=nl ./libcalamareslocaletest returns the Dutch strings for
   plain get, which isn't what we expect).
 - sr@latin is still special.
2019-08-06 00:05:24 +02:00
Adriaan de Groot
a9292d0c75 [libcalamares] Implement getting the string 2019-08-05 23:54:53 +02:00
Adriaan de Groot
50d74c4eca [libcalamares] Add get() to the string
- Look up the translation of the requested string with the current
   or a specific locale. This implementation is a stub.
 - Add tests for the getter.
2019-08-05 23:37:25 +02:00
Adriaan de Groot
e0edd1f3e2 [libcalamares] Fix misleading comment, add accessor
- the sort order is not English-at-the-top
 - add accessor for the locale ID.
2019-08-05 23:32:13 +02:00
Adriaan de Groot
28293ef77a [libcalamares] Expand tests of TranslatableString 2019-08-05 23:30:51 +02:00
Adriaan de Groot
5d6ccfe8fc [libcalamares] Adjust tests for new Esperanto support 2019-08-05 18:30:50 +02:00
Adriaan de Groot
18e2f2ae52 [libcalamares] Add tests for new TranslatedString
- Test that construction works as expected
 - Add count() method to TranslatedString for testing purposes.
2019-08-05 17:57:32 +02:00
Adriaan de Groot
19ca1b3c30 [libcalamares] One missing bit of coding style 2019-08-04 23:00:03 +02:00
Adriaan de Groot
8ea4091c7b [libcalamares] Add a TranslatedString class to locale/
- While QObject::tr and gettext give us translations **most** of the
   time via the translation mechanism, we sometimes have strings
   embedded in configuration files that need to be shown to people
   as well. Follow the .desktop style in handling this.
 - A key's value **might** be translated; use `key[lang]` for the
   translation into one of the languages that Calamares understands.
   Code that expects a translated (human-readable) string in a configuration
   file can use TranslatedString to collect all the translations of a
   given key, so that it displays the right string from the configuration
   when needed.
2019-08-04 22:56:41 +02:00
Adriaan de Groot
1afa9c4d08 [libcalamares] Apply current coding style to all of libcalamares/ 2019-08-04 22:24:55 +02:00
Adriaan de Groot
7fcb7be1e4 [libcalamares] Apply current coding style to libcalamares/locale/ 2019-08-04 22:17:12 +02:00
Adriaan de Groot
43ba59361b [libcalamares] Don't format generated files of CLDR data 2019-08-04 22:16:33 +02:00
Adriaan de Groot
fa2b94d931 [libcalamares] Apply current coding style to libcalamares/partition/ 2019-08-04 22:13:58 +02:00
Adriaan de Groot
312865cdd9 [libcalamares] Fix build on FreeBSD 2019-08-04 22:09:53 +02:00
Adriaan de Groot
b8a74657f4 [libcalamares] Apply current coding style to libcalamares/utils/
- String.cpp needs special handling since part of it should
   remain unchanged, the formatting is "special" there.
2019-08-04 22:01:56 +02:00
Adriaan de Groot
29b9a21f59 [libcalamares] Don't format files copied from KCoreAddons 2019-08-04 22:01:31 +02:00
Adriaan de Groot
b7f54a3866 [libcalamares] Don't break string tables by reformatting 2019-08-04 22:01:31 +02:00
Adriaan de Groot
cac07c1472 [libcalamares] Use std::chrono::seconds for timeouts
- Distinguish just-an-int from seconds all across the API
2019-08-01 22:47:42 +02:00
Adriaan de Groot
abd7ce2886 Merge branch 'master' into strictly-typed-timeout 2019-08-01 15:55:53 +02:00
Adriaan de Groot
c19ce26e5f [libcalamares] Expand GlobalStorage with load()
- Counterpart to save(), for JSON-style dumps
2019-08-01 12:25:42 +02:00
Adriaan de Groot
97384d3839
Merge pull request #1187 from bill-auger/job-weights
implement definable job weights
2019-07-29 13:25:09 +02:00
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.
2019-07-05 23:20:19 +02:00
Adriaan de Groot
1a85435372 [libcalamares] Get target path relative to host / 2019-07-05 13:05:49 +02:00
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.
2019-07-05 11:29:14 +02:00
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.
2019-07-04 11:50:14 +02:00
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.
2019-07-04 11:48:43 +02:00
Adriaan de Groot
aa3f909be7 [libcalamares] Tests for UMask handling 2019-07-03 00:40:05 +02:00
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
2019-07-03 00:40:05 +02:00
Adriaan de Groot
31e78ff0c2 [libcalamares] Add umask helper functions 2019-07-03 00:40:05 +02:00
bill-auger
9201842025 implement definable job weights 2019-06-28 13:38:53 -04:00
Adriaan de Groot
bd8c3fd893 CI: apply coding style to libcalamares/modulesystem 2019-06-27 15:13:32 +02:00
Adriaan de Groot
61f46e77e0 [libcalamares] Typo-fix in comment 2019-06-21 16:38:15 +02:00
Adriaan de Groot
d3df346ce7 [libcalamares] Move TemporaryDir into TemporaryMount
- Only one user of TemporaryMount, and we should distinguish
   "regular" temp mounts from temp mounts with a hand-picked
   mount point.
2019-06-21 16:37:35 +02:00
Adriaan de Groot
08537823ae [libcalamares] Special-case for not-for-dash-o options
- The unpackfs module uses this to --bind-mount things
   without options.
2019-06-21 10:45:29 +02:00
Adriaan de Groot
ba7259d9ee [partition] Use TemporaryMount support class
- While here, fix up compile warning
 - add -R to umount for good measure
2019-06-20 14:49:44 +02:00
Adriaan de Groot
dd0adeb3bb [libcalamares] Add a RAII mounter
- mount on creation, unmount on destruction
2019-06-20 14:34:08 +02:00
Adriaan de Groot
2b4ffb2bd3 [libcalamares] Polish coding-style
- don't break after return type in declarations
 - apply same to partition service
2019-06-20 14:30:49 +02:00
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
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
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
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
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
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
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
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>
2019-05-08 19:20:38 +02:00
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?
2019-05-07 09:51:23 -04:00
Adriaan de Groot
0be34d281d [libcalamares] Remove incorrect comment
- The setting for OEM mode is already independent.
2019-05-07 07:48:40 -04:00
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.
2019-05-07 07:48:40 -04:00
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
2019-05-07 07:02:55 -04:00
Adriaan de Groot
7899ab83f9 [libcalamares] Remove convenience API 2019-05-03 11:35:13 -04:00
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.
2019-05-03 11:21:01 -04:00
Adriaan de Groot
fc76313ea6 [libcalamares] Implement GeoIP Handler config from map
- read map entries with alternate keys
 - delegate to other constructor
2019-05-03 11:06:36 -04:00
Adriaan de Groot
d5fe86c394 [libcalamares] Use NamedEnum for named-enum wrangling 2019-05-03 11:00:57 -04:00
Adriaan de Groot
5f01a8ccc5 [oemid] If the configuration is broken, complain loudly
- Adds an InvalidConfiguration value for internal errors

SEE #1136
2019-05-03 09:01:19 -04:00
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.
2019-05-02 11:17:55 -04:00
Adriaan de Groot
84a759a591 [libcalamares] Emphasise that GeoIP::Handler::get() is synchronous
- prep-work for also having an async API
2019-05-02 11:06:08 -04:00
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).
2019-05-02 08:38:31 -04:00
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.
2019-05-02 08:33:29 -04:00
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.
2019-05-02 07:25:48 -04:00
Adriaan de Groot
16413e7bdb [libcalamares] Stub GeoIPHandler
- The handler class should deal with configuration and query
2019-05-02 06:55:41 -04:00
Adriaan de Groot
26b61a4ddb [libcalamares] Make RegionZonePair type stronger
- Derive from QPair instead of being QPair
 - Add isValid() for checking
 - Convenience constructors
2019-05-02 06:16:08 -04:00
Adriaan de Groot
73a5e7dd62 [libcalamares] Put GeoIP in namespace
- Use consistent include-guard style
 - Put things in namespace CalamaresUtils
2019-05-02 05:58:52 -04:00
Adriaan de Groot
ce909f00cc [libcalamares] Drop unnecessary HAVE_XML
- Linking to QtXml gives us a -DQT_XML_LIB already, so use that.
2019-05-01 06:39:20 -04:00
Adriaan de Groot
9ed46fc275 [libcalamares] [locale] Adjust CMakeLists to moved code 2019-04-30 17:01:10 -04:00
Adriaan de Groot
7ec7278fd3 [libcalamares] [locale] Move GeoIP code to the library 2019-04-30 16:52:31 -04:00
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.
2019-04-29 06:49:16 -04:00
Adriaan de Groot
eaba696173 [libcalamares] Move the crash() function to the one place it's used 2019-04-29 06:49:16 -04:00
Adriaan de Groot
66c4445077 [libcalamares] Move translation-related functions to Retranslator.h 2019-04-29 06:49:16 -04:00
Adriaan de Groot
ac095d9ed0 [libcalamares] [libcalamaresui] [calamares] Adjust to moved Dirs.h 2019-04-29 06:49:16 -04:00
Adriaan de Groot
50694ef610 [libcalamares] Split dirs-functionality into separate file 2019-04-29 06:49:16 -04:00
Adriaan de Groot
2907b48844 [libcalamaresui] Move RESPATH #define to the one place it's used 2019-04-29 06:14:21 -04:00
Adriaan de Groot
432b8848ab [libcalamares] Make #include guards consistent 2019-04-29 06:14:21 -04:00
Adriaan de Groot
f076dd76ad [libcalamares] Rename YamlUtils.h
- Since we have the utils/ filesystem namespace, and use CalamaresUtils::
   as C++ namespace, simplify naming.
2019-04-29 06:14:21 -04:00
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.
2019-04-29 06:14:21 -04:00
Adriaan de Groot
3e011d1419 [libcalamares] Don't link with PythonQt
- PythonQt is only needed (and used) from the GUI library.
2019-04-29 04:36:32 -04:00
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.
2019-04-28 14:34:39 -04:00
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).
2019-04-28 14:34:39 -04:00
Adriaan de Groot
d506296aa7 [libcalamares] Adjust code to changed name
- renamed setting in the configuration file, but not in the code
 - add documentation to getters
2019-04-21 17:15:53 +02:00
Adriaan de Groot
10727c7bd9
Merge pull request #1126 from feren/patch-3
Patch to add 'dont-cancel' setting to disable Cancel only during the installation phase
2019-04-21 17:02:21 +02:00
Adriaan de Groot
c44e221fb6 Merge branch 'issue-1107'
FIXES #1107
2019-04-19 16:27:19 +02:00
Adriaan de Groot
cb5825a521 [libcalamares] English label with country 2019-04-19 13:52:19 +02:00
Adriaan de Groot
58aa9f4989 [libcalamares] Move LocaleLabel from libcalamaresui to libcalamares
- This isn't a UI-dependent class
 - Doesn't make much sense in CalamaresUtilsGui either
2019-04-19 10:04:49 +02:00
Adriaan de Groot
c99742bc70
Merge pull request #1127 from a-wai/partition-layout-size-checks
Add various checks for partition layout configuration
2019-04-18 13:48:50 +02:00
Adriaan de Groot
3ccbcdc1bd [libcalamares] Don't moc on JobQueue
- There is no reason for JobThread to have a Q_OBJECT macro,
   so drop the moccing (this also stops some warnings from
   the generated moc code).
 - Define the (virtual) destructor out-of-line to avoid vtable
   warnings.
2019-04-18 12:21:29 +02:00
Adriaan de Groot
bdb7bf71a8 Reduce warnings from moc-generated code
- The auto-generated code produces a lot of warnings from
   Clang 8; this obscures the more meaningful warnings from
   actual Calamares code, so tone the warnings down.
 - For Clang, set CALAMARES_MOC_OPTIONS.
 - Add convenience CMake function for automoccing. It applies
   the options as needed to a given target.
2019-04-18 12:06:09 +02:00
Adriaan de Groot
cef2f50510 Reduce warnings about extra ;
- Trailing ; after Q_UNUSED
 - Trailing ; after CALAMARES_RETRANSLATE
2019-04-18 12:06:09 +02:00
Adriaan de Groot
c83395ff6d Reduce warnings for yaml-cpp
- Use only utils/YamlUtils.h to pull in yaml-cpp and supporting code.
 - When compiling with clang, turn off warnings that the system header
   for yaml-cpp would generate.
2019-04-18 12:06:09 +02:00