Commit Graph

297 Commits

Author SHA1 Message Date
Adriaan de Groot
f89951716e [libcalamares] Add mode to createTargetFile()
- Unconditionally **not** overwriting the target file isn't an option:
  writing hostname, for instance, expects that to be done even
  if `/etc/hostname` already exists on the target filesystem.
2020-02-24 12:14:50 +01:00
Adriaan de Groot
39cc43f26b [libcalamares] Fix tests
- QCOMPARE() is sensitive to differing types in actual and expected,
  and uchar and int (and mode_t and int) are different.
2020-02-21 17:53:43 +01:00
Adriaan de Groot
1bb43e06e2 Merge branch 'master' into kpmcore-manager 2020-02-19 18:34:44 +01:00
Adriaan de Groot
f6526f7d9f [libcalamares] Add some tests for CreationResult
- More important is the compiler warning that will show up
   if we add more failure states.
2020-02-14 13:21:16 +01:00
Adriaan de Groot
274115c727 [libcalamares] Update tests to reflect changed API 2020-02-14 13:07:29 +01:00
Adriaan de Groot
2d7398161d [libcalamares] More detail for createTargetFile()
- Return a result-object with statrus information and the path
   which was previously used (empty for "failures").
2020-02-14 13:03:51 +01:00
Adriaan de Groot
e72ecaafd3 Merge branch 'kpmcore-manager'
Introduces a "partitioning service" into libcalamares,
shuffles a bunch of things into it, tries to help out
with settling the system between partitioning actions.
2020-02-13 13:41:53 +01:00
Adriaan de Groot
59ddda6225 Merge branch 'wrangle-boost' 2020-02-12 12:44:09 +01:00
Adriaan de Groot
a11280b427 [libcalamares] Expand tests for printable entropy 2020-02-12 12:22:02 +01:00
Adriaan de Groot
090716ba4f [libcalamares] Warnings-- in Entropy
- reading a file yields a qint64
 - need to mash the unsigned data from twister to signed char data.
2020-02-12 12:15:13 +01:00
Adriaan de Groot
7efed8226c [libcalamares] Warnings--, update copyright 2020-02-12 12:10:58 +01:00
Adriaan de Groot
8181808bec [libcalamares] Fix build
- drop now-obsolete boost-warnings.h
 - add missing namespace alias to GlobalStorage.h (removed accidentally
   in previous commit)
2020-02-12 11:25:10 +01:00
Adriaan de Groot
96580e5c40 [libcalamares] Convenience header for Boost and its warnings 2020-02-12 10:28:48 +01:00
Adriaan de Groot
6432b7f42a [libcalamares] Hit Boost warnings with a hammer
- Tons of warnings from Clang 9 in Boost::Python code, so
   turn of most of those warnings in the Boost-support code.
2020-02-11 16:46:44 +01:00
Adriaan de Groot
240fe2a564 [libcalamares] Add convenience createTargetParentDirs() 2020-02-07 16:09:02 +01:00
Adriaan de Groot
6ede9f2c7c [libcalamares] Test QFileInfo::dir() for completeness 2020-02-07 16:08:38 +01:00
Adriaan de Groot
e65969d587 [libcalamares] Re-do createTargetDirs()
- Drop the basedirs idea, replace return with just bool
 - Use QDir::mkpath, with some extra validation
 - Test it a bit
2020-02-07 15:51:46 +01:00
Adriaan de Groot
8b8ecf7b7b [libcalamars] Improve test init and cleanup
- Test createTargetFile and removeTargetFile
 - Clean up afterwards
 - Ensure /tmp is the RMP for each test
2020-02-07 15:23:02 +01:00
Adriaan de Groot
b502d78984 [libcalamares] Fix warning message
- "create" was when this function was used elsewhere
2020-02-07 13:58:44 +01:00
Adriaan de Groot
394eee3954 [libcalamares] Test more targetPath() scenario's 2020-02-07 13:57:14 +01:00
Adriaan de Groot
8d23e665ea [libcalamares] Fix targetPath() tests
- there is less simplification done than you might think
2020-02-07 13:53:49 +01:00
Adriaan de Groot
daa5b804b3 [libcalamares] Split paths-tests into own test executable
- Since these tests all want a system object, and a GS
   with a sensible setup, give them one with its own initTestCase().

This could have been done with one executable, running tests from
multiple classes, but there's not much overall benefit there.
2020-02-07 13:49:06 +01:00
Adriaan de Groot
31878dd43b [libcalamares] Avoid double / between root and path in targetPath() 2020-02-07 13:29:35 +01:00
Adriaan de Groot
15bca702c1 [libcalamares] Add tests for path functions (part 1) 2020-02-07 11:51:13 +01:00
Adriaan de Groot
95936549e2 [libcalamares] Add a createTargetBasedirs()
- Used to ensure that the directories leading up to a given path
   exist. Implementation is incomplete and broken for now.
 - While here, avoid removing an empty pathname in removeTargetFile()
   (the empty pathname indicates a broken configuration).
2020-02-07 11:30:37 +01:00
Adriaan de Groot
bf882cec1d [machineid] Migrate removeFile() to libcalamares
- Becomes removeTargetFile()
2020-02-07 11:16:01 +01:00
Adriaan de Groot
9ef04192db [libcalamares] Simplify returns in targetPath() 2020-02-07 11:03:40 +01:00
Adriaan de Groot
4b3f7eb209 [calamares] Local translations can be a separate setting
- Don't stick this in Settings, though, it becomes overly complicated.
2020-02-05 17:48:39 +01:00
Adriaan de Groot
d956c79291 [libcalamares] Load translations from more places
- To support translation testing, without needing to recompile
   Calamares, load files from the local directory when debugging,
   or from /usr/share/calamares/lang/ in general.
 - This allows updating translations and testing them with just
   lrelease (a translation build tool) installed, without rebuilding
   Calamares.
 - This allows distro's to ship updated or modified translations without
   rebuilding Calamares.
2020-01-30 19:06:33 +01:00
Adriaan de Groot
e56948cefa [libcalamares] Fix tests (cell is the lower unicode byte) 2020-01-29 16:41:17 +01:00
Adriaan de Groot
be0831ee11 [libcalamares] Add printable-entropy (e.g. for password salt) 2020-01-29 16:39:25 +01:00
Adriaan de Groot
8947f9c00c [libcalamares] Test the Entropy service 2020-01-29 16:16:12 +01:00
Adriaan de Groot
a574b43eb8 [libcalamares] Also report empty buffer as no-entropy 2020-01-29 16:08:33 +01:00
Adriaan de Groot
842a90e026 [libcalamares] Add an Entropy service for getting random data
- Tries to get the "best" random data
 - Reports the quality of the random data it got
2020-01-29 16:03:50 +01:00
Adriaan de Groot
23a957e783 [libcalamares] Chase API change (timeouts)
- The new mount service needed adjustment for the independent
   change of timeouts: int -> chrono::seconds.
2020-01-10 15:22:26 +01:00
Adriaan de Groot
f6d89354a1 Merge branch 'master' into kpmcore-manager 2020-01-10 14:54:13 +01:00
Adriaan de Groot
5fbd0169ca [libcalamares] Reduce clang warnings (only-inline-virtual, unused parameters) 2020-01-07 10:33:21 +01:00
Adriaan de Groot
0ed2a3e35f [libcalamares] Refactor translation-setting
- Split the actual loading of translations into classes
   to encapsulate the loading logic,
 - Build a collection of classes to do the different kinds
   of translation loading,
 - Build a generic function to load something and update a
   static pointer to the translation.

This makes installTranslator() much easier to read, and encapsulates
the type-specific loading somewhere else. While here, add a timezone-
translations loader so that the split-out TZ translations also work.
2019-12-11 06:40:22 -05:00
Adriaan de Groot
3c1b0e6730 [libcalamares] Reduce warnings with Clang 9 (yaml.h) 2019-11-29 00:17:02 +01:00
Adriaan de Groot
ac75c63001 [libcalamares] Reduce warnings with Clang 9 (Boost::Python)
- The boost headers fall foul of tons of Clang warnings, so introduce
   a mechanism like moc-headers for turning off most of those warnings.
2019-11-29 00:17:02 +01:00
Andrius Štikonas
490c14d93d QLatin1Literal->QLatin1String. 2019-09-21 20:44:33 +01:00
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
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
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
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
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
82622373bc [libcalamares] Remove superfluous ; (warnings--) 2019-08-20 16:05:22 +02:00
Adriaan de Groot
f31ff8b9ea [libcalamares] Apply coding style to PluginFactory 2019-08-13 20:50:52 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Arnaud Ferraris
680b0bc472 Add missing header to NamedEnum
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2019-04-18 10:55:47 +02:00