Compare commits

...

335 Commits

Author SHA1 Message Date
Philip
ee72adcfb5 [partition] Only bootloader model should ignore devices that are not of Disk_Device type #950 2018-05-12 10:06:14 +02:00
Adriaan de Groot
e59e6abcc8 [libcalamaresui] Fix build
- Include all headers for types that need to be fully-defined
   (e.g. return types). This guards against uses in contexts where
   those headers have not been implicitly or previously included.

FIXES #948
2018-05-11 11:34:55 +02:00
Adriaan de Groot
33543afb2e [CI] fix compile 2018-05-11 11:24:39 +02:00
Andrius Štikonas
d56ec80794 [partition] Switch to scoped Device enums. 2018-05-11 08:39:19 +02:00
Caio Carvalho
a48b1eacdd [partition] Changing PartUtils::getDevices to ignore devices that aren't of Disk_Device type. 2018-05-11 08:37:35 +02:00
Caio Carvalho
4121a108ab [partition] Ignoring LVM devices in PartUtils::getDevices to prevent installing bootloader in LVM VG. 2018-05-11 08:37:25 +02:00
Caio Carvalho
311f13d479 [partition] Checking if there is LUKS creation support and if partition is not Extended before enabling encryption in CreatePartitionDialog. 2018-05-11 08:36:52 +02:00
Philip
3026b04f44 [Merge] with upstream 2018-04-13 16:40:22 +02:00
Adriaan de Groot
4f16d65a8b CMake: bump version 2018-04-13 09:59:16 -04:00
Adriaan de Groot
17fd10cdb1 [locale] Un-idiomize back to 3.1 2018-04-13 09:44:17 -04:00
Adriaan de Groot
faf21ce438 [locale] Log GeoIP attempt URL, use possibly-modified form 2018-04-13 09:43:46 -04:00
Adriaan de Groot
be5ad6944e [locale] On GeoIP failure, log URL 2018-04-13 09:43:46 -04:00
AlmAck
9d1c3e2669 the first character must be a comment
to original code would match both lines:
zen_US.UTF-8 UTF-8
#en_US.UTF-8 UTF-8

introducing "#" should check only the commented lines
2018-03-10 09:59:38 +01:00
AlmAck
e7e4a8d783 Enable the correct language in the locale.gen list
the original code does not distinguish the document comments inside the locale.gen file from the real locale list. The language was then enabled from the header comments of the file instead of the correct value in the list.

The new code verify tha the complete locale string is just after the first character of the string, enablig only the correct value of the locale list.
An example:
#  en_US.UTF-8 UTF-8 --> document header, should not be enabled
#en_US.UTF-8 UTF-8 --> correct section to enable

Related to this request:
https://code.chakralinux.org/tools/calamares-chakra/issues/2
2018-03-10 09:59:26 +01:00
Adriaan de Groot
adf59ec657 [libcalamaresui] Provide access to the breeze SVGs 2018-01-14 16:11:23 -05:00
Adriaan de Groot
9f04ba92fc [libcalamaresui] Swap breeze icons
Instead of using state-foo icons, use the corresponding emblems because
they are larger and don't have the 'cloud state' background.
Keep the existing names because I don't feel like churning
more of the codebase than necessary.

These new icons are from KDE Neon breeze-icon-theme 5.40, e.g.
breeze-icon-theme: /usr/share/icons/breeze/emblems/8/emblem-error.svg
2018-01-14 16:10:05 -05:00
Adriaan de Groot
0cd2c440f1 [libcalamaresui] Add breeze SVGs under LGPLv3 2018-01-14 16:09:56 -05:00
Philip
f5fa62feef [bootloader] merge with upstream master branch 2018-01-14 15:55:30 -05:00
Philip
2e07c28db0 [partition] merge with upstream master branch 2018-01-14 15:54:23 -05:00
Philip
666ea16303 [unmount] merge with upstream master branch 2018-01-14 15:53:41 -05:00
Philip
78671a1547 [unpackfs] merge with upstream master branch 2018-01-14 15:53:01 -05:00
Philip
84a29ddfec [welcome] merge with upstream master branch 2018-01-14 15:52:29 -05:00
Philip
a206167690 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2018-01-03 03:56:23 -05:00
Philip
b489adfc81 [postcfg] use -f3 for pacman-mirrors 2018-01-02 03:35:43 -05:00
Philip
da2a177243 [postcfg] initialize package manager databases 2018-01-01 15:14:08 +01:00
Philip
06f646bffd [initcpiocfg] search just for 'lvm2' in partition[fs] 2017-12-30 09:03:17 -05:00
Philip
5cb0cc4f66 [initcpiocfg] add 'lvm2' hook as needed 2017-12-30 09:03:07 -05:00
Philip
6e27e9af2b [partition]: fix cDebug() format 2017-12-27 10:14:40 -05:00
Philip
c8b4e13a5b [partition] Fix propagation of new partition table to global storage. 2017-12-27 10:14:26 -05:00
Philip
0f138c1481 [partition] Rename slots, to avoid recursion
- see also https://github.com/calamares/calamares/issues/880
- missed within 7ce52ecda7
2017-12-25 16:08:35 -05:00
Andrius Štikonas
f5479d44a0 Convert CreatePartitionTableJob to KPMcore operation. 2017-12-25 11:31:45 -05:00
Andrius Štikonas
e801c19280 Convert FormatPartitionJob to KPMcore's CreateFileSystemOperation. 2017-12-25 11:31:35 -05:00
Andrius Štikonas
7a8ae69ccf Cleanup unnecessary kpmcore includes. 2017-12-25 11:31:26 -05:00
Philip
47ed3630cb Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-12-23 07:33:30 -05:00
Adriaan de Groot
d5d6a0eac3 [partition] Rename slots, to avoid recursion 2017-12-23 07:33:09 -05:00
Philip
85d60158fa CMake: look for ECM at top-level, add to search path if found 2017-12-16 09:18:15 -05:00
Philip
ce1e8fa499 [partition] update to kpmcore v3.3 2017-12-16 08:46:22 -05:00
Philip
5ebd629307 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-12-15 02:52:33 -05:00
Philip
d213924beb Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-12-07 16:46:22 -05:00
Philip
01f2f966ea [branding] update to v17.1 2017-12-01 07:49:06 -05:00
Philip
b147e2f011 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-12-01 07:42:47 -05:00
Philip
3edd6160b7 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-11-14 10:43:53 -05:00
Philip
b3ab2dfaab Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-11-06 06:10:34 -05:00
Philip
6f950e5e38 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-11-02 04:12:26 -04:00
Philip
0e72dcfc10 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-10-27 06:18:37 -04:00
Philip
e43de173d2 [Travis] alert #Manjaro instead of upstream chan 2017-10-25 04:02:33 -04:00
Philip
95e3b7650c Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-10-24 08:26:44 -04:00
Philip
5359bab006 Merge branch '3.1.x-stable' of https://github.com/calamares/calamares into 3.1.x-stable 2017-10-15 14:08:15 -04:00
Philip
921440375a [Merge] with upstream and fix conflicts 2017-09-26 05:08:09 -04:00
Philip
aeb936e1c0 [Cleanup] remove unneeded code 2017-09-21 03:08:13 -04:00
Adriaan de Groot
d66094267f [Merge] adopt watingspinnerwidget.cpp/h 2017-09-21 03:06:27 -04:00
Adriaan de Groot
2fa9eb603b Memory: clean up interface used to get memory (RAM) size 2017-09-21 02:53:59 -04:00
Adriaan de Groot
a2b70ee1d4 Fix code using re-imported spinner 2017-09-21 02:46:51 -04:00
Adriaan de Groot
92fa40b922 Replace memory-size detection.
- drop use of dmidecode to determine exact physical memory size
 - use sysinfo() to find memory size (assumes linux 2.3.48 or later)
2017-09-21 02:46:27 -04:00
Adriaan de Groot
57e5e9582f Refactor password-errors-indication (again)
- set message and status icon in one go
 - only check until an error is found
 - Mark TODO for passwordRequirements
2017-09-21 02:46:10 -04:00
Adriaan de Groot
ab67b7d2f1 Passwords: introduce password-checking
- Introduce a map 'passwordRequirements' in users.conf,
   which is a list of named requirements. There are only
   two settings right now, min and max length, but
   additional checks can easily be added in UsersPage.cpp
   by defining additional lambda's to check the given
   password string.
 - Add PasswordCheck instances as needed, with functions
   to check acceptability and to produce messages on rejection.
 - Documentation in the users.conf file itself.

 - In passing, refactor setting of pixmaps on labels.

FIXES #790
2017-09-21 02:45:56 -04:00
Adriaan de Groot
decf83d403 Replace scandir with listdir, simplify loop
FIXES: ??
2017-09-21 02:45:23 -04:00
Philip
1e00813341 [branding] don't use minor version 2017-09-16 14:02:13 -04:00
Gabriel C
eaea0e93ce CreateUserJob: do not force any autologin group
There is no need to force folks haing a random group
 bc that is a Distro think. SDDM/GDM works just fine without
 having a group for the user to autologin.
 Just setup a group in users.conf .. is why we have a configuration
 option for that.
2017-09-14 08:15:51 -04:00
Adriaan de Groot
fa6728b47c FS: use untranslated name to identify filesystem
Resolves issue where 'linuxswap' is translated to 'Linux-Swap',
for instance. FileSystem::name() provides a translated name,
not an untranslated one.

This should move to KPMCore.

FIXES #797
2017-09-14 08:15:00 -04:00
Philip
174800b262 Revert "[modules] work on #797 and #796"
This reverts commit 80b1a7e0b6.
2017-09-14 08:13:40 -04:00
Philip
ca4dd17139 Revert "[modules] work on #797 and #796"
This reverts commit fcc23b98d2.
2017-09-14 08:12:56 -04:00
Philip
c53e3c2c54 Revert "[fstab] work on #797 and #796"
This reverts commit 084a7ea651.
2017-09-14 08:12:21 -04:00
Philip
a199da7aac Revert "[fstab] work on #797 and #796"
This reverts commit bfcfcf7ee3.
2017-09-14 08:11:51 -04:00
Philip
db4bbde6a1 Revert "[modules] work on #797 and #796"
This reverts commit 80a1286833.
2017-09-14 08:11:19 -04:00
Philip
6560494bff Revert "[modules] work on #797 and #796"
This reverts commit daff029024.
2017-09-14 08:10:34 -04:00
Philip
daff029024 [modules] work on #797 and #796
- this is a workaround and might need to be reverted.
2017-09-12 10:23:43 -04:00
Philip
80a1286833 [modules] work on #797 and #796 2017-09-12 09:16:20 -04:00
Philip
bfcfcf7ee3 [fstab] work on #797 and #796 2017-09-12 08:22:19 -04:00
Philip
084a7ea651 [fstab] work on #797 and #796 2017-09-12 07:48:29 -04:00
Philip
39d73e1882 [fstab] fix btrfs with LUKS and systemd
- see also #730
- credit goes to @abucodonosor
2017-09-12 07:10:59 -04:00
Philip
fcc23b98d2 [modules] work on #797 and #796 2017-09-12 06:34:02 -04:00
Adriaan de Groot
3450f0b963 PEP8: Just don't do it 2017-09-12 05:50:59 -04:00
Philip
80b1a7e0b6 [modules] work on #797 and #796 2017-09-12 05:33:32 -04:00
Philip
ff08c8ae83 [luksopenswaphookcfg] work on #797 and #796 2017-09-12 05:10:41 -04:00
Philip
6c00ce7e30 [luksbootkeyfile] work on #797 and #796 2017-09-12 05:08:56 -04:00
Philip
82c0321122 [initcpiocfg] work on #797 and #796 2017-09-12 05:07:35 -04:00
Philip
402d891aaa [bootloader] work on #797 and #796 2017-09-12 05:06:26 -04:00
Philip
c4405eafa3 [grubcfg] work on #797 and #796 2017-09-12 05:03:04 -04:00
Philip
d0db22342b [fstab] work on #797 and #796 2017-09-12 05:00:37 -04:00
Philip
5f85b41740 [locale] default to the states 2017-09-10 22:31:14 +01:00
Philip
dfd60d46f9 [Merge] with upstream 2017-09-07 11:07:26 +01:00
Adriaan de Groot
9b8a194e39 A mounted partition cannot be resized or replaced
- add check for isMounted()
 - a device with a mounted partition cannot be (entirely) erased

FIXES #639
2017-09-07 11:02:50 +01:00
Adriaan de Groot
d348633b14 Reduce Qt runtime warnings.
- deleteLater() doesn't like nullptr (produces a warning, but is harmless)
 - reparenting across threads doesn't work, comment on that but leave
   it in, since this may be relevant for memory management.
2017-09-07 11:02:40 +01:00
Adriaan de Groot
83e6dfc81e Swap + LUKS configuration.
Based on patches from crazy@frugalware.org and V3n3RiX.

(presumably) FIXES #730
2017-09-07 11:02:09 +01:00
Adriaan de Groot
362b5f44a2 YAML: refactor YAML-exception reporting
- both NetInstall (group data) and Locale (GeoIP) use network
   data returned as a source of YAML data. Try to explain
   parsing errors for both.

FIXES #786
2017-09-06 18:15:57 +01:00
Adriaan de Groot
c85ecce1e7 YAML-NetInstall: log data errors.
When NetInstall receives YAML data, handle parser errors more gracefully:
show line and column, but because it's network data (not in a local file),
do some work to print out the actual data received.

FIXES #786
2017-09-06 18:15:43 +01:00
Adriaan de Groot
a9e1f48c51 YAML: on error, report filename along with location 2017-09-06 18:15:32 +01:00
Adriaan de Groot
154aa4b0bd Remove overly-verbose debugging 2017-09-06 18:15:20 +01:00
Adriaan de Groot
0e7f95a5ab Auto-resize the main window.
If the summary widget is large, it gets a scrollbar. This looks really
weird, so prefer to grow the installer window instead. Discussed with
@sitter and settled on this solution.

ViewSteps can signal the ViewManager that they need more space (in pixels),
which may or may not be honored.

FIXES #778
2017-09-05 19:15:26 +01:00
Adriaan de Groot
3ef23344c3 One more have_dracut check (thanks to @crazy) 2017-09-05 19:15:08 +01:00
Adriaan de Groot
633f70e93e Be more explicit on why a device is winnowed from the list 2017-09-05 19:14:55 +01:00
Adriaan de Groot
4cd564655a Locale: translate OK, Cancel buttons in language selection (reported on IRC) 2017-09-04 14:26:05 +01:00
Adriaan de Groot
073196822a Make check for dracut more readable 2017-09-04 14:25:50 +01:00
Adriaan de Groot
2f7ac598a3 Apply patch from V3n3RiX.
https://gitlab.com/redcore/redcore-desktop/raw/master/app-admin/calamares/files/calamares-3.1.1-luks-fstab-write-devmapper.patch

Fixes #772
2017-09-04 14:25:37 +01:00
Adriaan de Groot
6fba81ca0d Avoid race condition around libparted device use.
FIXES #782
2017-08-31 13:27:01 +02:00
Adriaan de Groot
17e76677c7 PEP8 whining 2017-08-31 13:26:29 +02:00
Adriaan de Groot
e3a86c6dfc initcpiocfg: accept (but warn) for missing config file in the host 2017-08-31 13:26:25 +02:00
Adriaan de Groot
6e2d89afd4 Don't leak memory when winnowing disk devices
- Improve logging a little
 - Don't leak Device*, but delete the raw pointer when erasing
 - Document that DeviceInfo takes ownership and doesn't leak
2017-08-31 13:22:52 +02:00
Adriaan de Groot
4f34c68a14 Don't leak memory for allocated modules 2017-08-31 13:22:38 +02:00
Adriaan de Groot
ef84c63f69 Fix uninitialized values (valgrind report) 2017-08-31 13:22:24 +02:00
Adriaan de Groot
a776284dfa Having a mounted partition should not disqualify the entire device.
FIXES #780
(should reopen #639 for double-checking)
2017-08-28 21:26:51 +01:00
Adriaan de Groot
5100f32ebe #780: check for isMounted(), not for where-would-it-be-mounted 2017-08-28 21:26:42 +01:00
Adriaan de Groot
47347c77fa DeviceInfo: refactor translation of DeviceInfoPage
- For Boot and Device info widgets, add a retranslateUi() method,
   since the labels change not only in response to translation
   events but also UI events.

FIXES #779
2017-08-28 21:26:22 +01:00
Adriaan de Groot
3b15884f83 Refactor check for EFI system.
The TODO stands, to delegate this to KPMCore.
2017-08-28 21:26:06 +01:00
Adriaan de Groot
e6e1324353 Log process output of failed commands
FIXES #612
2017-08-28 21:25:54 +01:00
Philip
50dc94995b [Merge] fix conflicts with upstream 2017-08-23 12:30:52 +01:00
Philip
f3154252f5 [Version] bump to v3.1.2 2017-08-23 09:27:11 +01:00
Philip
a937313b32 [Merge] apply upstream changes and fix conflicts 2017-08-23 09:17:10 +01:00
Philip
c103f80df9 Keyboard: guess at layout based on locale
Split locale into <language>_<country> and go looking for keyboard
layouts that match. Do that in reverse, so look for country first.

- known weakness is el_CY [should get layout gr] because CY and el
  don't name any keyboard layout.
- known weakness are Hausa, Igbo .. which are ha_NG and ig_NG. They select
  keyboard layout ng, which is labeled 'English [Nigeria]'; they ought
  to select ng[hausa] and ng[igbo], which are the right variant keyboard
  layouts to use.
- similar selecting a locale in Canada [en_CA, fr_CA, iu_CA ...] will
  select keyboard layout ca, which is for French-speaking Canada.
  Locale en_CA should select keyboard en -- e.g. en[us]. But iu_CA
  [Inuktituk] needs layout ca[ike].
2017-07-20 13:47:54 +02:00
Philip
a92d8ad57c bump to v3.1.1.2 2017-07-13 09:11:31 +02:00
Adriaan de Groot
08d6536845 About: adjust to the system font size.
FIXES #433
2017-07-13 08:45:48 +02:00
Adriaan de Groot
b6c1e4dbd7 RemoveUser: fix bad PEP8-ing
FIXES #577
2017-07-13 08:45:21 +02:00
Adriaan de Groot
8948134649 Partitions: extend getDevices() with minimum size.
This is preparatory work for making the available-space check consistent with
what the partition module will allow for installation. Right now, the check
for available space will allow a mounted drive, even /, to satisfy the check.
2017-07-13 08:45:09 +02:00
Adriaan de Groot
9cc8a65577 Partition: reduce code duplications 2017-07-13 08:44:58 +02:00
Adriaan de Groot
a62143f62b Partitions: use an enum with clear semantics instead of bool 2017-07-13 08:44:44 +02:00
Adriaan de Groot
42d5e6d1c4 Partitions: use KPMCore-defined default backend 2017-07-13 08:44:27 +02:00
Adriaan de Groot
0cfca31cac Partitions: improve wording of debug messages 2017-07-13 08:44:17 +02:00
Adriaan de Groot
aa35224ab1 Partitions: split device-listing (and winnowing) into separate source file.
The grab-list-of-writable-devices code is usable for the partition module, but
also useful for welcome module, so reduce its footprint.
2017-07-13 08:44:05 +02:00
Adriaan de Groot
9c79a961df Partitions: split KPMCore-finding code into an include-module 2017-07-13 08:43:53 +02:00
Adriaan de Groot
f33aba0d5b Partitions: shuffle some device-detection code off to PartUtils.cpp 2017-07-13 08:42:47 +02:00
Adriaan de Groot
1b98974f07 Partitions: drop devices with mounted partitions.
FIXES #639
2017-07-13 08:42:35 +02:00
Adriaan de Groot
1919c2a712 Partitions: code-formatting 2017-07-13 08:42:23 +02:00
Philip
99868756cd bump version to v3.1.1.1 2017-07-11 11:24:16 +02:00
Adriaan de Groot
fc119c1fae LightDM: fix type (thanks Kevin Kofler) 2017-07-11 11:23:27 +02:00
Adriaan de Groot
71d08a89a9 [unpackfs] fix merge 2017-07-11 11:23:02 +02:00
Adriaan de Groot
d6d8e73532 Python: at beginning of job, if pretty status has changed, emit progress to update it in the UI. 2017-07-11 11:21:40 +02:00
Adriaan de Groot
b29643d49b Python: tidy description of hwclock module 2017-07-11 11:21:09 +02:00
Adriaan de Groot
cb36c54755 Python: trim description to the first line of run.__doc__ 2017-07-11 11:20:55 +02:00
Adriaan de Groot
9860922496 SUSE DM: add special case configuring autologin in sysconfig (openSUSE)
FIXES #582
2017-07-11 11:20:38 +02:00
Adriaan de Groot
c150c61c59 LightDM: if lightdm.conf doesn't exist (for autologin), create it
FIXES #568
2017-07-11 11:20:20 +02:00
Lisa Vitolo
4f71b9741e Change both size box suffices to MiB. 2017-07-11 11:20:02 +02:00
Lisa Vitolo
a7e59f8656 Add "MB" suffix to the "edit partition" size box.
Makes it easier to know which unit Calamares is using when
resizing a partition. The "Create partition" dialog has
it already.
2017-07-11 11:19:52 +02:00
Adriaan de Groot
8bb6dc6d36 Python: use the module run().__doc__ as a pretty description. 2017-07-11 11:19:20 +02:00
Adriaan de Groot
7ff814790d Python: get docstring from run() method 2017-07-11 11:19:06 +02:00
Adriaan de Groot
b28edfdc8e Python: separate description of dummy module from docs of run() 2017-07-11 11:18:51 +02:00
Adriaan de Groot
3f2bba4e33 Python: Be more descriptive when modules can't be loaded. 2017-07-11 11:18:36 +02:00
Adriaan de Groot
854e6d3883 C++ trickery, part two: shorten code 2017-07-05 09:12:28 +02:00
Adriaan de Groot
f6cbf48b17 C++ trickery to make the code shorter to read. 2017-07-05 09:12:14 +02:00
Adriaan de Groot
843706e38d FinishedPage: show message instead of details on failure 2017-07-05 08:59:49 +02:00
Adriaan de Groot
a5604aa978 FinishedPage: no modal pop-ups in a slot
Switch the failure popup to non-modal, and quit the application when
the pop-up is closed. This allows signals to be delivered to other
slots connected to JobQueue::failed.
2017-07-05 08:59:33 +02:00
Adriaan de Groot
5be4a00f62 Be more verbose while scanning devices 2017-07-05 08:59:17 +02:00
Adriaan de Groot
0a278ca546 QLabel::setPixmap() isn't virtual, don't make it so. 2017-07-05 08:58:29 +02:00
Adriaan de Groot
ce1caeaf63 FinishedPage: add copyright, reduce warnings 2017-07-05 08:58:05 +02:00
Adriaan de Groot
5d7db27c06 FinishedPage: don't reboot on failure
If installation fails, and you end up on the last page, suppress the
reboot-now checkbox.

FIXES #605
2017-07-05 08:57:48 +02:00
Kai Dohmen
7991e4548b Fix unknown partition-type Fat32 at mount and in fstab
Only the string "fat32" and "fat16" will be replaced with vfat. If an
case sensitive "Fat32" some problems occure:
- mount: partition cannot be mounted (e.g. a fat32 efi partition)
- fstab: system won't even boot because fstab does not know the type "Fat32"
2017-07-04 13:55:55 +02:00
Bernhard Landauer
47ba304b0c branding corrections 2017-06-30 22:55:19 +02:00
Philip
a377c3234e [displaymanager] fix typo 2017-06-28 16:25:14 +02:00
Philip
bccb9443b0 [displaymanager] PEP8ify it 2017-06-28 16:21:16 +02:00
Philip
b3488f8e85 [displaymanager] use a better routine to detect .desktop files 2017-06-28 15:35:43 +02:00
Bernhard Landauer
8de9849e9a rm trailing whitespace 2017-06-28 15:35:35 +02:00
Philip
9d906e7964 [displaymanager] fix issue with tuple for string 2017-06-28 13:29:27 +02:00
Philip
cc5adb6586 [displaymanagers] fix sed routine 2017-06-28 11:44:26 +02:00
Philip
f048772020 [displaymanager] PEP8ify it for better reading 2017-06-28 11:12:08 +02:00
Philip
faf065205b [displaymanager] PEP8tify it 2017-06-28 11:07:00 +02:00
Philip
38f5af3c82 [displaymanager] error out the right way 2017-06-28 11:06:52 +02:00
Philip
e57107187c [displaymanager] re-add lightdm_conf_path to 'if lightdm' 2017-06-28 11:06:43 +02:00
Philip
82626d7639 [displaymanager] fix issues 2017-06-28 11:06:35 +02:00
Philip
ac179343d6 [displaymanager] fix typo 2017-06-28 11:06:27 +02:00
Philip
c75dbd83e0 [displaymanager] add filter for .desktop file 2017-06-28 11:06:19 +02:00
Philip
cd3e631027 [displaymanager] simplify code 2017-06-28 11:06:10 +02:00
Adriaan de Groot
59588672ed SDDM-config: allow poorly formatted SDDM config
SDDM itself doesn't trip over duplicate sections or keys, but
the Python config-parser does (in strict mode). Relax a bit.

FIXES #579
2017-06-28 11:05:03 +02:00
Adriaan de Groot
36950f6dd9 Shrink upper padding.
FIXES #591
2017-06-28 09:14:27 +02:00
Philip
7ea82be77a [displaymanager] PEP8ify it 2017-06-28 09:10:06 +02:00
Bernhard Landauer
7f7ab50356 [displaymanager] check for installed lightdm greeter and configure accordingly
- no matter if for example slick-greeter is installed as "lightdm-slick-greeter" or whatever.
  tested with lightdm-deepin-greeter and slick-greeter.
- plus some little simplifications
- added Copyright
https://github.com/calamares/calamares/issues/756
2017-06-28 03:11:14 +02:00
Bernhard Landauer
d4e8e4f472 fix https://github.com/calamares/calamares/issues/756 2017-06-27 15:05:03 +02:00
Philip
aea947a517 [mhwdcfg] PEP8 Modification 2017-06-23 13:22:13 +02:00
Philip
96c9d744e4 [Merge] with upstream and development changes 2017-06-23 13:10:17 +02:00
Adriaan de Groot
5614c897ec Clang: reduce warnings 2017-06-21 14:31:44 +02:00
Adriaan de Groot
61e2f285ed Clang: reduce warnings 2017-06-21 14:31:38 +02:00
Adriaan de Groot
f2fd8c744b Clang: improve usefullness of clang-warnings
- don't check c++98 compatibility
 - don't show warnings on third-party code
 - don't check for padding
2017-06-21 14:31:28 +02:00
Adriaan de Groot
69f51cb909 Screensize: warn the user if the screen is too small to show the installer nicely.
Also document the welcome screen requirements-checks.

FIXES #751
2017-06-21 14:31:02 +02:00
Adriaan de Groot
17f1f0f0b8 Screensize: refactor, move screen-size constants into global constexpr
Also drop the minimum size a tiny bit, to 1024x520.
2017-06-21 14:30:30 +02:00
Adriaan de Groot
d0c7577fb4 Screensize: on small screens, crush the sidebar.
This still isn't enough to show the whole timezone or keyboard widget,
but does make more of it visible.
2017-06-21 14:30:24 +02:00
Adriaan de Groot
ea7a45baa6 Screensize: on small screens, be smaller.
On 1024x768, limit to 1024x520.
On 800x600, limit to 800x520. This is too small to show everything in the
  timezone widget and keyboard, so it needs some more work.
2017-06-21 14:30:14 +02:00
Adriaan de Groot
b1ce6c3df1 Cleanup: add copyright lines 2017-06-21 14:30:07 +02:00
Adriaan de Groot
b140080eff Reduce minimum-width to 800px
Tested in a VirtualBox setup with screen set to 800x600,
all of the Generic Linux RT components are visible, and
the buttons are too (which fall off the screen otherwise).

FIXES #731
2017-06-21 14:29:55 +02:00
Philip
019fd67992 [Bump] v3.1.0.2 2017-06-21 08:35:03 +02:00
Adriaan de Groot
d682ee20de Partitionmanager: minor docs edit 2017-06-21 08:32:32 +02:00
Adriaan de Groot
1479fc974e Partitionmanager: fix PM-tests build 2017-06-21 08:32:18 +02:00
Adriaan de Groot
49e0d0d504 Partitionmanager: remove unused code files 2017-06-21 08:32:05 +02:00
Adriaan de Groot
8373620cca Partitionmanager: partly fix PM-tests build 2017-06-21 08:31:54 +02:00
Adriaan de Groot
ffb599ff36 Salt: add test for salt format 2017-06-21 08:31:42 +02:00
Adriaan de Groot
8e28df0f22 Salt: add copyright info 2017-06-21 08:31:30 +02:00
Adriaan de Groot
f93bff0a5f Salt: improve saltiness. 2017-06-21 08:31:16 +02:00
Adriaan de Groot
c7a323e466 Displaymanager: simplify gdm configuration.
Replace calling out to shell to run echo redirected to a file by
opening the file and writing to it.
2017-06-20 00:37:13 +02:00
Adriaan de Groot
182c3bdcd0 Displaymanager: check alternative locations for kdmrc.
FIXES #578
2017-06-20 00:36:59 +02:00
Adriaan de Groot
df819f2efb Displaymanager: refactor a little, don't bail out at the first DM that doesn't configure 2017-06-20 00:36:34 +02:00
Alf Gaida
76aa860b73 Fixed pep8 whining in module displaymanager
Added myself to copyright
2017-06-20 00:36:30 +02:00
Adriaan de Groot
af582c104f Netinstall: remove no-longer-used icons and qrc 2017-06-20 00:32:26 +02:00
Adriaan de Groot
e57579c92f Keyboard: special-case, pc+latin interpreted as us,
instead of as unknown which selects the first layout in the list.
2017-06-19 18:26:16 +02:00
Adriaan de Groot
7f08ea9d15 Keyboard: code-docs, copyright 2017-06-19 18:26:10 +02:00
Adriaan de Groot
35c1ab61bf Keyboard: simplify execution of setxkbmap.
Use QProcess::execute() with the 'safer' argument-list, rather than
escaping and de-escaping strings. Also reduce noise by only passing
a variant if there is one.
2017-06-19 18:25:53 +02:00
Adriaan de Groot
70b098a2b0 Increate the maximum allowed length of a hostname.
The hostname madagascarsteenplaatschildpad (.uva.nl) doesn't fit in 24,
and hostname(1) accepts up to 64 characters. The RFCs vary, but 63 +
terminating NUL or length-octet + data maximum 64 bytes seen to be
the common ground.

FIXES #514
2017-06-19 18:25:37 +02:00
Adriaan de Groot
47a79b9cd9 Coverity: fix some uninitialized members 2017-06-19 18:25:14 +02:00
Philip
742fa9a75b [CMakeModules] fix routine 2017-06-18 21:57:26 +02:00
Philip
f4d0ab47ec [CMakeModules] fix if loops 2017-06-18 21:57:15 +02:00
Philip
e8d803b866 [CMakeModules] fix if loops 2017-06-18 21:40:02 +02:00
Philip
11f9c588d2 [CMakeModules] fix if loops 2017-06-18 21:25:59 +02:00
Philip
9817dba3af [CMakeModules] search for v3.1+ PythonQT 2017-06-18 21:21:37 +02:00
Philip
971a77bdcd [CMakeModules] adopt to pythonqt v3.2 so-name changes 2017-06-18 10:24:43 +02:00
Philip
1591a1c8cf [Bump] v3.1.0.1 2017-06-17 15:10:56 +02:00
Adriaan de Groot
b99fa43e6a PartitionModule: skip nullptr devices, and report count
FIXES #686
2017-06-14 18:46:25 +02:00
Adriaan de Groot
8823938c8f PartitionModule: avoid nullptr crashes
Fix up iterator code so that it handles nullptr better.
This avoids part of #686.
2017-06-14 18:46:14 +02:00
Adriaan de Groot
2dbcee346d PartitionModule: look for atasmart and blkid, to avoid link-time failure.
This just puts a warning in the cmake log, but will help diagnose
situations where libatasmart.so.4 is installed, but libatasmart.so
is not -- in which case -latasmart fails.
2017-06-14 18:46:03 +02:00
Adriaan de Groot
839a34dacf Bump required KPMCore to 3.0.3
The newer release resolves (upstream) a problem with NVMe encryption.

FIXES #697
2017-06-14 18:45:39 +02:00
Adriaan de Groot
9b2778eecc Cleanup: bump CMake requirement, so we have better C++14 build support 2017-06-14 18:45:32 +02:00
Allen Welkie
33040dbec0 Fix nested lists in README
The nesting wasn't displaying properly in github.
2017-06-14 18:45:23 +02:00
Adriaan de Groot
8f6d08d23e Logging: add a global storage dump method 2017-06-07 00:19:07 +02:00
Adriaan de Groot
06739955bb Logging: format the multi-line warning about no-supported-languages 2017-06-07 00:18:57 +02:00
Adriaan de Groot
7195054bfd Logging: distinguish different failures in module instantiation. 2017-06-07 00:18:49 +02:00
Adriaan de Groot
9ad46eca55 Locale: when entering page, guess language.
If user picks an installer language on the welcome page, then
the system language follows that setting -- but only after the
first action where Calamares must guess the system language
based on location. So guess on entry, so that system language
follows installer language.

FIXES #688.
2017-06-07 00:15:38 +02:00
Adriaan de Groot
49cdaf10d6 Locale: don't overwrite explicit choice
If the user selects a language from the dialog (by clicking 'change'),
then preserve that explicit choice even when clicking on another
location which would reset the language based on the installer-
language.
2017-06-07 00:15:19 +02:00
Adriaan de Groot
98d58215ad Locale: double-click to close locale-selection dialog 2017-06-07 00:15:03 +02:00
Adriaan de Groot
945a96bb51 Locale: refactor to update labels in one place only 2017-06-07 00:14:41 +02:00
Adriaan de Groot
6adb590f5d Timezones: make some TZ+0 pixels transparent, since otherwise it claims Amsterdam 2017-06-07 00:14:04 +02:00
Adriaan de Groot
ae15c17060 Keyboard: avoid multiple connects
When selecting keyboard layout, pause, then select another, the
QTimer wasn't being disconnected from the previously selected
language, so the second selection would fire the timeout, and
then call *two* slots .. and then three, ... Disconnect when
the timer fires, too.
2017-06-07 00:13:23 +02:00
Adriaan de Groot
1415ec69be Configs: empty config files are ok.
The default umount.conf contains no keys -- so it isn't a map,
but it is a valid config file. Avoid the warning by accepting
empty files.

FIX 707
2017-06-03 23:07:54 +02:00
Adriaan de Groot
0659fc72b8 Configs: fix trivial spelling error 2017-06-03 23:07:43 +02:00
udeved
24c877b36e chrootcfg: rank mirrors fasttrack on host
The ranking at boot is too unreliable
2017-05-30 19:20:21 +02:00
Philip
1ee2a76ef3 [postcfg] add geoip 2017-04-02 13:27:27 +02:00
Philip
4d29526206 [bootloader] fix mkdirs -> makedirs 2017-03-24 23:06:34 +01:00
Philip
e9d146e359 [bootloader] pep8 optimization 2017-03-20 22:57:38 +01:00
Philip
36f87f5f35 [bootloader] fix issue when /EFI/Boot exists 2017-03-20 07:58:12 +01:00
Bernhard Landauer
c8d043f6df fix colors for both vertex themes 2017-03-20 07:57:25 +01:00
Bernhard Landauer
bfaaf15314 try fix text on maia-dark 2017-03-20 07:57:15 +01:00
Philip
3c2275f0d7 [branding] remove unneeded files 2017-03-02 09:46:16 +01:00
udeved
e9db1f3650 chrootcfg: update module for changed packages global storage 2017-03-02 09:45:19 +01:00
Philip
1f41a58532 Merge remote-tracking branch 'upstream/master' into 3.1.x-stable 2017-02-24 22:05:43 +01:00
Kyle Robertze
901e53da76 fixed two bugs in packages module
if the key "install" was used, the install would crash as the backwards
compatibility checks were incorrect. Fixed a typo in the run function so
pre- and post-install hooks now work correctly
2017-02-20 20:42:07 +01:00
Kyle Robertze
99118e06e6 updated docs to better explain new features
the docs do not current reflect the new net-install and packages modules
changes well. This updates them to explain the new keys in the
configuration files.
2017-02-20 20:41:50 +01:00
Teo Mrnjavac
624552c168 Improve EFI configuration check in bootloader. 2017-02-17 21:37:50 +01:00
Teo Mrnjavac
d49e791346 Improve EFI configuration check in grubcfg. 2017-02-17 21:37:38 +01:00
Teo Mrnjavac
c1747c81b4 Add optional config value neverCreateSwap in partition module.
CAL-458 #close The feature has landed in master, please test.
2017-02-17 21:37:01 +01:00
Philip
20ce3e4c47 [branding] update branding 2017-02-08 00:52:40 +01:00
Philip
75bcaea423 Merge remote-tracking branch 'upstream/master' into 3.0.x-stable 2017-02-08 00:52:07 +01:00
Philip
33fc1ba08a Merge remote-tracking branch 'upstream/master' into 3.0.x-stable 2017-01-27 11:40:05 +01:00
Philip
7499e44046 [upstream] merge latest commits 2017-01-23 16:48:27 +01:00
Philip
31470eabde [initcpio] adjust conf 2017-01-23 16:23:52 +01:00
Philip
93e46baa4a [services] adopt Marcus' modifications for Manjaro 2017-01-23 16:16:22 +01:00
Philip
0440765680 [configs] adjust for manjaro 2017-01-23 16:09:47 +01:00
Philip
170b6cadc2 adopt upstream changes vor v3.0 2017-01-23 15:52:14 +01:00
Philip
368101a73e [bump] v2.4.6 2017-01-23 15:31:59 +01:00
Philip
87e4e3c4a0 [bootloader] improve efi check and don't fail if install path is null 2017-01-23 15:29:49 +01:00
Philip
a57b08c200 Adopt upstream changes on webview and partition
- [webview] fix crash on loading webview page with QtWebengine
- [partition] Bump KPMcore dependency to 3.0.2
- [partition] Make sure to disable the root password if setRootPassword is false
- [partition] Force the correct flags for EFI system partition
- [partition] Always write bootloader path
- [partition] Do not write bootloader install path if the system is EFI
2017-01-23 15:23:22 +01:00
Philip
82243914de [partition] The sender QObject should be in scope so the bootloader path is written 2017-01-11 14:00:47 +01:00
Philip
6c941fc4c9 [branding] prepare for 'Gellivara' 2017-01-01 03:30:45 +01:00
Philip
e6c1125988 [partition] Disallow assigning the same mountpoint to two partitions 2017-01-01 02:45:44 +01:00
Chantara Tith
ed42185927 Use device's immutable copy instead of rescanning. 2016-12-19 20:02:58 +01:00
Bernhard Landauer
297cf45bba logo padding 2016-12-19 19:53:38 +01:00
Bernhard Landauer
213c65676e update logos 2016-12-19 19:53:28 +01:00
Teo Mrnjavac
188b9efd79 Bump KPMcore requirement. 2016-12-19 19:48:07 +01:00
Teo Mrnjavac
a9e4315665 Make sure we write the inner fs type to globalstorage. 2016-12-19 19:48:01 +01:00
Philip
f73171ac4c [partition] Bump kpmcore requirements 2016-12-19 19:47:51 +01:00
Teo Mrnjavac
56fbec7b55 Improve user-visible strings in SetPartFlagsJob. 2016-12-19 19:47:46 +01:00
Teo Mrnjavac
6d0965ef3f Keep an immutable copy for every scanned Device* to avoid rescans. 2016-12-19 19:47:30 +01:00
Teo Mrnjavac
44368db30a Assert on nullptr Device*. 2016-12-19 19:47:25 +01:00
Chantara Tith
9afa2935cd Update to KPMcore LUKS' API changes 2016-12-19 19:47:18 +01:00
Chantara Tith
39c9f82c9c API Changes, logicalSectorSize -> logicalSize, totalSectors -> totalLogical. 2016-12-19 19:47:14 +01:00
Teo Mrnjavac
026fa922d2 Do not dereference nullptr. 2016-12-14 09:02:07 +01:00
Teo Mrnjavac
07de427aab Provide default for m_writeEtcDefaultKeyboard in KeyboardViewStep. 2016-12-14 09:01:56 +01:00
Teo Mrnjavac
163cf52900 Write hasInternet to GlobalStorage.
CAL-431 #close
2016-12-14 09:01:39 +01:00
Teo Mrnjavac
cdf77c8a0d Do not LINK_PUBLIC by default. 2016-12-14 09:01:10 +01:00
Teo Mrnjavac
07fd7135e3 Add LINK_PRIVATE_LIBRARIES to calamares_add_plugin. 2016-12-14 09:00:59 +01:00
Teo Mrnjavac
bbba9e60ee Document settings for services module. 2016-12-14 09:00:35 +01:00
Philip
0bd31b0404 [displaymanager] set_autologin: Unset autologin for sddm when needed 2016-12-06 21:58:30 +01:00
Philip
b6e0e226a1 Bump 2016-11-25 22:28:57 +01:00
Kevin Kofler
041db6e3d7 [dracutlukscfg] Don't include keyfile in initramfs on unencrypted /boot.
This matches the fix in initcpiocfg and initramfscfg.
2016-11-25 22:28:44 +01:00
Kevin Kofler
423c7b57e3 [initramfscfg] Don't include keyfile in initramfs on unencrypted /boot.
This matches the fix in initcpiocfg.

I had to create an encrypt_hook_nokey that is a copy of encrypt_hook
without the part that copies the keyfile.
2016-11-25 22:28:33 +01:00
Teo Mrnjavac
e0c5e81b5b Write Btrfs subvolume lines to fstab. 2016-11-25 22:24:57 +01:00
Teo Mrnjavac
84b96b4f18 Special case for Btrfs root: create subvolumes and mount them. 2016-11-25 22:24:53 +01:00
Teo Mrnjavac
c0b7b0bc27 Show warning. 2016-11-18 09:06:29 +01:00
Teo Mrnjavac
45e7363dfb Oops. 2016-11-18 09:06:26 +01:00
Teo Mrnjavac
8d93c34031 Warn user about encrypted root with unencrypted /boot. 2016-11-18 09:06:21 +01:00
Teo Mrnjavac
555f0ba6cf Don't include keyfile in initramfs on unencrypted /boot. 2016-11-18 09:06:17 +01:00
Philip
b95503065f [mount] Bind-mount /run/udev in the chroot by default 2016-11-09 07:40:34 +01:00
Philip
2e9fe3f185 Modifications
-  [welcome] Use QNetworkAccessManager in checkHasInternet
-  [bootloader] Fix UEFI firmware workaround for 32-bit UEFI
2016-11-06 08:49:45 +01:00
Philip
e21338d81e Modifications
- [bootloader] Fix vfat_correct_case
- [welcome] Fix RequirementsChecker::checkHasInternet()
2016-11-05 22:02:41 +01:00
Philip
bbef3d8abc bump 2016-11-05 10:21:38 +01:00
Philip
e91be5bd12 v2.4.4
- [partition] remove sgdisk dependency
- [displaymanager] use configparser and add better autologin handling
- [displaymanager] set a preferred Xsession for autologin
- [netinstall] Support selecting visible groups by default
- [packages] Add option of updating packages db before perfoming package operations
- [packages] Allow try_install and try_remove entries in packages module
- [unpackfs] Do not fail if rsync returns exit code 23
2016-11-05 09:55:37 +01:00
Philip
27602cf832 bump 2016-10-28 21:00:32 +02:00
Kevin Kofler
9ae4755b1c New dummycpp C++ job module (ported from dummypython). 2016-10-28 20:57:32 +02:00
Kevin Kofler
206a89e06c Add support for C++/Qt batch job plugins
These job plugins work similarly to view modules, with the following
differences:

* These jobs need to link only libcalamares, not libcalamaresui. For
  this reason, PluginFactory was moved from libcalamaresui to
  libcalamares. (It depends only on QtCore.)

* Instead of deriving from ViewModule, derive from CppJob (which is a
  subclass of Job).

* Like process and Python jobs, a job plugin is a single job, whereas a
  ViewModule can generate a whole list of jobs.

The CppJob and CppJobModule classes are new. In Module::fromDescriptor,
the combination type=job, intf=qtplugin is now supported and mapped to
CppJobModule.
2016-10-28 20:55:50 +02:00
Teo Mrnjavac
19e41a3c71 Only add LUKS keyfile if relevant, and with a 15s timeout. 2016-10-28 20:52:20 +02:00
Teo Mrnjavac
a2c7256406 Add user to groups separately from useradd. 2016-10-28 20:51:03 +02:00
Philip
f71602ec6c [displaymanager] use same pattern for all str.format calls 2016-10-26 22:13:38 +02:00
Bernhard Landauer
811b1422e9 [displaymanager] add Deepin 2016-10-26 22:13:26 +02:00
Philip
3f614ee3a6 bump 2016-10-22 11:11:18 +02:00
Philip
3a5cb47081 [branding] bump to 16.10 2016-10-22 11:08:35 +02:00
Kevin Kofler
c0898c308b [grubcfg] Compare integers to integers, not strings.
target_env_call returns an integer, so do not compare its result to the
string "0".
2016-10-22 11:06:55 +02:00
V3n3RiX
4a35035396 dracut : unlock encrypted swap if exists (#267)
* dracut : unlock encrypted swap if exists
* only check for swap_outer_uuid if dracut exists
2016-10-22 11:06:42 +02:00
V3n3RiX
93ecf0d44d Only write rd.luks.uuid if dracut is present and leave other initramfs generators clean (#266)
* add rd.luks.uuid to GRUB_CMDLINE (fixes unbootable system with dracut --nohostonly, and doesn't affect any other initramfs generators)

* typo

* only write rd.luks.uuid line if dracut is present, and leave other initramfs generators alone :D

* add missing = operator
2016-10-22 11:06:31 +02:00
V3n3RiX
601f61fefa add rd.luks.uuid to GRUB_CMDLINE (fixes unbootable system with dracut… (#265)
* add rd.luks.uuid to GRUB_CMDLINE (fixes unbootable system with dracut --nohostonly, and doesn't affect any other initramfs generators)

* typo
2016-10-22 11:06:14 +02:00
Kevin Kofler
645ba95989 [dracutlukscfg] New module: pre-configuration for dracut+LUKS. 2016-10-22 11:05:27 +02:00
Kevin Kofler
b1169dc48c [grubcfg] Fix mismatched quoting and escaping.
If we use .replace("'", "'\\''") for escaping, we also need to use
single quotes, not double quotes.

This was broken by the port from '%' to format, which also randomly
changed quoting characters for no good reason. Changing the outer ones
does not matter, but \" or ' within a string is not the same thing!
2016-10-22 11:00:54 +02:00
Calamares CI
b935c7db79 Automatic merge of Transifex translations 2016-10-22 11:00:43 +02:00
David McKinney
1b8b5aab13 [initramfscfg] New module: pre-configuration for update-initramfs.
Added an initramfscfg module to handle pre-configuration for the Debian
update-initramfs, such as installing hooks (needed for luks/FDE support
on Debian-based distros).

Closes #254. (Cherry-picked from the pull request.)
2016-10-22 11:00:20 +02:00
Philip
ebfa1e2838 bump 2016-10-14 18:23:10 +02:00
Teo Mrnjavac
130eb43b26 Use the target system's boot name in partitioning summary widget. 2016-10-14 18:21:52 +02:00
Kevin Kofler
9a5221bbd8 [fstab] Write configurable options to crypttab (default: luks).
fstab.conf: Add a new "crypttabOptions" option that defaults to "luks".
            Document that for Debian and Debian-based distributions, the
            setting should be changed to "luks,keyscript=/bin/cat".

main.py: Append the options from the above setting to the end of every
         line in crypttab.

At least the "luks" option should always be there, because there may be
different encryption types. The Debian initramfs-tools also require the
Debian-specific keyscript option and will otherwise ignore the keyfile
entirely (see pull request #254).
2016-10-14 18:21:20 +02:00
Kevin Kofler
fce053439c [fstab] Do not omit "/" from crypttab.
At least the Debian update-initramfs needs the entry to be there (see
pull request #254). Dracut will probably need it too. And logically, it
should be there.
2016-10-14 18:21:05 +02:00
shainer
a1b2a71267 Bump QT_VERSION to 5.6 in cmake. 2016-10-14 18:18:56 +02:00
shainer
0956ea5dec Set qt >=5.6 as a "global" dependency.
i.e. not just required by the netinstall module.
2016-10-14 18:18:45 +02:00
shainer
c9946117cd Fix dependency list in README.md
The netinstall module requires Qt >= 5.6 instead of
Qt >= 5.3
2016-10-14 18:18:34 +02:00
Calamares CI
7a24975654 Merge Translation Updates 2016-10-14 18:17:54 +02:00
Philip
a5b4e3f518 bump 2016-10-01 10:09:04 +02:00
Philip
0153c47e29 fix settings.conf 2016-09-28 22:33:18 +02:00
Teo Mrnjavac
11dd15f123 Allow disabling automated LUKS modes. 2016-09-28 21:20:13 +02:00
Teo Mrnjavac
36a96fedfb Make writeEtcDefaultKeyboard an option in keyboard.conf. 2016-09-28 21:19:56 +02:00
Kevin Kofler
a37896da49 Fix locale filtering for UTF-8 on Fedora.
locale -a returns the locales using ".utf8" names rather than ".UTF-8".
The case-insensitive match does not help because it is "utf8" rather
than "UTF-8". So we need to match both with and without the dash.
2016-09-28 21:19:40 +02:00
Kevin Kofler
97b06e3101 users: Drop dependency on chfn. (#260)
Pass the full name directly to useradd instead, using the "-c" (comment)
parameter, which is "currently used as the field for the user's full
name" according to the documentation.

The chfn utility is no longer installed by default on current Fedora
releases due to its dependency on libuser. (They split out chfn and chsh
from util-linux into an optional subpackage.) It could be added as a
dependency of Calamares, but since it is needed inside the chroot, it
has to be on the base live image, not the overlay. Thus, to allow
testing Calamares with a simple "dnf install calamares" again, the
dependency needs to go away. And it is unnecessary anyway.
2016-09-28 21:16:52 +02:00
Philip
c06903e168 [servicescfg] set pulse autospawn; clean up imports 2016-09-24 12:28:51 +02:00
Philip
b4a63ecb28 [chrootcfg] add new module
- 'chrootcfg' is used for our new netinstall approach
- it provides the needed function to install packages in a chroot
- we might need to optimize its progressbar visualization ...
2016-09-24 12:24:30 +02:00
Philip
5eb56733b8 [servicescfg] add new module
- 'servicescfg' is the equivalent to module 'services', just for OpenRC
2016-09-24 12:21:28 +02:00
Teo Mrnjavac
4ed06d4fe3 Remove target resolv.conf before proceeding. 2016-09-22 20:52:04 +02:00
Teo Mrnjavac
ec2094d768 Add support for writing keymap data to /etc/default/keyboard. 2016-09-22 20:52:01 +02:00
Philip
8632c3d609 Merge branch '2.4.x-stable' of github.com:manjaro/calamares into 2.4.x-stable 2016-09-17 10:35:43 +02:00
Philip
d935b7df68 bump 2016-09-17 10:35:05 +02:00
Philip Müller
9dfbc54fda Merge pull request #4 from calamares/2.4.x-stable
Merge upstream changes
2016-09-17 10:13:16 +02:00
Philip Müller
94b8ad3b6e Merge pull request #1 from manjaro/pr-mhwdcfg
[mhwdcfg] replace hardwarecfg
2016-09-17 10:11:22 +02:00
Teo Mrnjavac
77fb264129 Fix VFAT filename handling in bootloader module.
CAL-385 #close
2016-09-16 16:30:17 +02:00
Teo Mrnjavac
0c29233062 Warning in debug output when the RequirementsChecker is misconfigured.
CAL-390 #close
2016-09-16 11:00:53 +02:00
Philip
cc4ab32350 [mhwdcfg] clean up imports; use target_env_call() 2016-09-13 08:08:57 +02:00
udeved
5610e274ba [mhwdcfg] adopt development changes 2016-09-13 08:04:20 +02:00
Philip
8627f291ca [mhwdcfg] update conf file
- add 302 and 380 to gfx IDs
- disable usb as we don't have any config for that yet
2016-09-12 07:39:25 +02:00
Philip
045ec0408d [displaymanager] prefer Budgie before Gnome 2016-09-10 23:04:27 +02:00
Philip
7ed780014d [mhwdcfg] replace hardwarecfg 2016-09-10 14:55:28 +02:00
Philip
5adf8775fa [users] use upstream config 2016-09-10 14:10:43 +02:00
Philip
cda9e2f0c1 [settings.conf] update for Manjaro 2016-09-10 14:03:39 +02:00
Philip
ff8be85b08 [modules] adjust to Manjaro configs 2016-09-10 14:01:50 +02:00
Philip
d50a27cb4c [data] add manjaro files 2016-09-10 13:57:38 +02:00
Philip
587681b14c [postcfg] add new module 2016-09-10 13:56:05 +02:00
Philip
d7c8ff5a45 [hardwarecfg] add new module 2016-09-10 13:55:17 +02:00
Philip
6b44320bfd [branding] add Manjaro branding 2016-09-10 13:54:01 +02:00
Philip
295cf12b9a [plymouthcfg] add module to configure Plymouth 2016-09-10 13:50:50 +02:00
156 changed files with 2162 additions and 771 deletions

View File

@ -12,7 +12,7 @@ services:
notifications:
irc:
- "chat.freenode.net#calamares"
- "chat.freenode.net#manjaro"
install:
- docker build -t calamares .

View File

@ -176,7 +176,7 @@ set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX
### Bump version here
set( CALAMARES_VERSION_MAJOR 3 )
set( CALAMARES_VERSION_MINOR 1 )
set( CALAMARES_VERSION_PATCH 12 )
set( CALAMARES_VERSION_PATCH 13 )
set( CALAMARES_VERSION_RC 0 )
set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} )

View File

@ -12,6 +12,6 @@ set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
include(KDEInstallDirs)
include(GenerateExportHeader)
find_package( KF5 REQUIRED CoreAddons )
find_package( KF5 REQUIRED Config I18n IconThemes KIO Service )
find_package( KF5 REQUIRED Config I18n Service WidgetsAddons )
find_package( KPMcore 3.0.3 REQUIRED )
find_package( KPMcore 3.2 REQUIRED )

View File

@ -1,2 +1,2 @@
FROM kdeneon/all:dev-stable
FROM kdeneon/all:user
RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext kio-dev libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5parts-dev libkf5service-dev libkf5solid-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools

209
LICENSES/LGPLv3-Breeze Normal file
View File

@ -0,0 +1,209 @@
The Breeze Icon Theme in icons/
Copyright (C) 2014 Uri Herrera <uri_herrera@nitrux.in> and others
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
Clarification:
The GNU Lesser General Public License or LGPL is written for
software libraries in the first place. We expressly want the LGPL to
be valid for this artwork library too.
KDE Breeze theme icons is a special kind of software library, it is an
artwork library, it's elements can be used in a Graphical User Interface, or
GUI.
Source code, for this library means:
- where they exist, SVG;
- otherwise, if applicable, the multi-layered formats xcf or psd, or
otherwise png.
The LGPL in some sections obliges you to make the files carry
notices. With images this is in some cases impossible or hardly useful.
With this library a notice is placed at a prominent place in the directory
containing the elements. You may follow this practice.
The exception in section 5 of the GNU Lesser General Public License covers
the use of elements of this art library in a GUI.
https://vdesign.kde.org/
-----
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@ -0,0 +1,8 @@
/* Allow Calamares to be started without password authentication
*/
polkit.addRule(function(action, subject) {
if ((action.id == "com.github.calamares.calamares.pkexec.run"))
{
return polkit.Result.YES;
}
});

13
data/calamares.desktop Executable file
View File

@ -0,0 +1,13 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Install Manjaro Linux
GenericName=Live Installer
Comment=Install the operating system to disk
Comment[de]=Manjaro Linux installieren
Exec=/usr/bin/calamares_polkit %f
Icon=calamares
Terminal=false
StartupNotify=true
Type=Application
Categories=Qt;System;

6
data/calamares_polkit Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
if [ $(which pkexec) ]; then
pkexec --disable-internal-agent "/usr/bin/calamares" "$@"
else
/usr/bin/calamares "$@"
fi

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-NegativeText {
color:#da4453;
}
</style>
</defs>
<path
style="fill:currentColor;fill-opacity:1;stroke:none"
class="ColorScheme-NegativeText"
d="M 1 0 C 0.4459807 0 0 0.446 0 1 L 0 7 C 0 7.5541 0.4459807 8 1 8 L 7 8 C 7.554019 8 8 7.5541 8 7 L 8 1 C 8 0.446 7.554019 0 7 0 L 1 0 z "
/>
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="M 2 1 L 1 2 L 3 4 L 1 6 L 2 7 L 4 5 L 6 7 L 7 6 L 5 4 L 7 2 L 6 1 L 4 3 L 2 1 z "
/>
</svg>

After

Width:  |  Height:  |  Size: 661 B

18
data/images/state-ok.svg Normal file
View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path
style="fill:currentColor;fill-opacity:1;stroke:none"
class="ColorScheme-PositiveText"
d="M 4 0 C 1.784 0 0 1.784 0 4 C 0 6.216 1.784 8 4 8 C 6.216 8 8 6.216 8 4 C 8 1.784 6.216 0 4 0 z "
/>
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="M 6 2 L 3 5 L 2 4 L 1 5 L 2 6 L 3 7 L 7 3 L 6 2 z "
/>
</svg>

After

Width:  |  Height:  |  Size: 591 B

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-NeutralText {
color:#f67400;
}
</style>
</defs>
<path
style="fill:currentColor;fill-opacity:1;stroke:none"
class="ColorScheme-NeutralText"
d="M 4 0 C 3.7964835 0.00025315917 3.644678 0.09649124 3.5371094 0.3125 C 3.5371094 0.3125 0.077246535 7.200596 0.080078125 7.2285156 C 0.043417505 7.3055016 -1.2456632e-05 7.403681 0 7.5 C 0 7.7761424 0.22385763 8 0.5 8 L 7.5 8 C 7.7761424 8 8 7.7761424 8 7.5 C 8.0002021 7.3873383 7.9818808 7.3677538 7.8925781 7.1894531 L 4.4550781 0.29101562 C 4.346001 0.097741395 4.1955491 -0.00033128801 4 0 z "
/>
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="M 3.5 2 L 3.5 5 L 4.5 5 L 4.5 2 L 3.5 2 z M 3.5 6 L 3.5 7 L 4.5 7 L 4.5 6 L 3.5 6 z "
/>
</svg>

After

Width:  |  Height:  |  Size: 924 B

224
data/manjaro-icon.svg Normal file
View File

@ -0,0 +1,224 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3505"
version="1.1"
inkscape:version="0.91 r13725"
width="512"
height="512"
viewBox="0 0 512 512"
sodipodi:docname="manjaro-icon.svg">
<metadata
id="metadata3511">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3509" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1280"
inkscape:window-height="998"
id="namedview3507"
showgrid="false"
inkscape:zoom="1"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3505" />
<image
width="512"
height="512"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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
AAAAAM78f6ZMXPE9Xy/GAAAAAElFTkSuQmCC
"
id="image3513"
x="0"
y="0" />
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -30,7 +30,6 @@ modules-search: [ local ]
# For more information on running module instances, run Calamares in debug mode
# and check the Modules page in the Debug information interface.
# YAML: list of maps of string:string key-value pairs.
#instances:
#- id: owncloud
# module: webview
@ -61,17 +60,12 @@ modules-search: [ local ]
sequence:
- show:
- welcome
# - dummypythonqt
- locale
- keyboard
- partition
- users
- summary
- exec:
# - dummycpp
# - dummyprocess
# - dummypython
# - dummypythonqt
- partition
- mount
- unpackfs
@ -80,24 +74,22 @@ sequence:
- locale
- keyboard
- localecfg
# - luksbootkeyfile
# - luksopenswaphookcfg
# - dracutlukscfg
# - plymouthcfg
- luksopenswaphookcfg
- luksbootkeyfile
- plymouthcfg
- initcpiocfg
- initcpio
- users
- displaymanager
- mhwdcfg
- networkcfg
- hwclock
- services
# - dracut
- initramfs
# - grubcfg
- grubcfg
- bootloader
- postcfg
- umount
- show:
# - webview@owncloud
- finished
# A branding component is a directory, either in SHARE/calamares/branding or in
@ -109,7 +101,7 @@ sequence:
# Only the name of the branding component (directory) should be specified here, Calamares
# then takes care of finding it and loading the contents.
# YAML: string.
branding: default
branding: manjaro
# If this is set to true, Calamares will show an "Are you sure?" prompt right before
# each execution phase, i.e. at points of no return. If this is set to false, no prompt

View File

@ -0,0 +1,23 @@
---
componentName: manjaro
strings:
productName: Manjaro Linux
shortProductName: Manjaro
version: 17.1
shortVersion: 17.1
versionedName: Manjaro Linux 17.1 "Hakoila"
shortVersionedName: Manjaro 17.1
bootloaderEntryName: Manjaro
images:
productLogo: "logo.png"
productIcon: "logo.png"
productWelcome: "languages.png"
slideshow: "show.qml"
style:
sidebarBackground: "#454948"
sidebarText: "#efefef"
sidebarTextSelect: "#9E4F5D"

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,131 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Slides images dimensions are 800x440px.
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
interval: 20000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
Image {
id: background1
source: "slide1.png"
width: 800; height: 440
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
Text {
anchors.horizontalCenter: background1.horizontalCenter
anchors.top: background1.bottom
text: ""
wrapMode: Text.WordWrap
width: 800
horizontalAlignment: Text.Center
}
}
Slide {
Image {
id: background2
source: "slide2.png"
width: 800; height: 440
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
Text {
anchors.horizontalCenter: background2.horizontalCenter
anchors.top: background2.bottom
text: ""
wrapMode: Text.WordWrap
width: 800
horizontalAlignment: Text.Center
}
}
Slide {
Image {
id: background3
source: "slide3.png"
width: 800; height: 440
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
Text {
anchors.horizontalCenter: background3.horizontalCenter
anchors.top: background3.bottom
text: ""
wrapMode: Text.WordWrap
width: 800
horizontalAlignment: Text.Center
}
}
Slide {
Image {
id: background4
source: "slide4.png"
width: 800; height: 440
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
Text {
anchors.horizontalCenter: background4.horizontalCenter
anchors.top: background4.bottom
text: ""
wrapMode: Text.WordWrap
width: 800
horizontalAlignment: Text.Center
}
}
Slide {
Image {
id: background5
source: "slide5.png"
width: 800; height: 440
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
Text {
anchors.horizontalCenter: background5.horizontalCenter
anchors.top: background5.bottom
text: ""
wrapMode: Text.WordWrap
width: 800
horizontalAlignment: Text.Center
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -16,5 +16,8 @@
<file alias="images/boot-environment.svg">../../data/images/boot-environment.svg</file>
<file alias="images/partition-table.svg">../../data/images/partition-table.svg</file>
<file alias="images/squid.svg">../../data/images/squid.svg</file>
<file alias="images/state-ok.svg">../../data/images/state-ok.svg</file>
<file alias="images/state-warning.svg">../../data/images/state-warning.svg</file>
<file alias="images/state-error.svg">../../data/images/state-error.svg</file>
</qresource>
</RCC>

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -107,6 +108,18 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size )
case Squid:
pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/squid.svg", size );
break;
case StatusOk:
pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/state-ok.svg", size );
break;
case StatusWarning:
pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/state-warning.svg", size );
break;
case StatusError:
pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/state-error.svg", size );
break;
}
if ( pixmap.isNull() )

View File

@ -55,7 +55,10 @@ enum ImageType : int
PartitionReplaceOs,
PartitionTable,
BootEnvironment,
Squid
Squid,
StatusOk, // Icons for the requirements checker
StatusWarning,
StatusError
};
/**

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2018, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -19,8 +20,9 @@
#ifndef PYTHONQTGLOBALSTORAGEWRAPPER_H
#define PYTHONQTGLOBALSTORAGEWRAPPER_H
#include <QObject>
#include <QStringList>
#include <QVariant>
namespace Calamares
{

View File

@ -1,9 +1,3 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* SPDX-License-Identifier: MIT
* License-Filename: LICENSES/MIT-QtWaitingSpinner
*/
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
Modified 2014 by William Hallatt
Modified 2015 by Jacob Dawid

View File

@ -1,9 +1,3 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* SPDX-License-Identifier: MIT
* License-Filename: LICENSES/MIT-QtWaitingSpinner
*/
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
Modified 2014 by William Hallatt
Modified 2015 by Jacob Dawid

View File

@ -20,8 +20,16 @@ timeout: "10"
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
# Optionally set the --bootloader-id to use for EFI. If not set, this defaults
# to the bootloaderEntryName from branding.desc with problematic characters
# replaced. If an efiBootloaderId is specified here, it is taken to already be a
# valid directory name, so no such postprocessing is done in this case.
# Optionally set the bootloader ID to use for EFI. This is passed to
# grub-install --bootloader-id.
#
# If not set here, the value from bootloaderEntryName from branding.desc
# is used, with problematic characters (space and slash) replaced.
#
# The ID is also used as a directory name within the EFI environment,
# and the bootloader is copied from /boot/efi/EFI/<dirname>/ . When
# setting the option here, take care to use only valid directory
# names since no sanitizing is done.
#
# efiBootloaderId: "dirname"

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# === This file is part of Calamares - <http://github.com/calamares> ===
# === This file is part of Calamares - <https://github.com/calamares> ===
#
# Copyright 2014, Aurélien Gâteau <agateau@kde.org>
# Copyright 2014, Anke Boersma <demm@kaosx.us>
@ -13,6 +13,7 @@
# Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Adriaan de Groot <groot@kde.org>
# Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
# Copyright 2017, Ben Green <Bezzy1999@hotmail.com>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -235,10 +236,18 @@ def install_grub(efi_directory, fw_type):
# if the kernel is older than 4.0, the UEFI bitness likely isn't
# exposed to the userspace so we assume a 64 bit UEFI here
efi_bitness = "64"
bitness_translate = {"32": "--target=i386-efi",
"64": "--target=x86_64-efi"}
if efi_bitness == "32":
efi_target = "i386-efi"
efi_grub_file = "grubia32.efi"
efi_boot_file = "bootia32.efi"
elif efi_bitness == "64":
efi_target = "x86_64-efi"
efi_grub_file = "grubx64.efi"
efi_boot_file = "bootx64.efi"
check_target_env_call([libcalamares.job.configuration["grubInstall"],
bitness_translate[efi_bitness],
"--target=" + efi_target,
"--efi-directory=" + efi_directory,
"--bootloader-id=" + efi_bootloader_id,
"--force"])
@ -260,19 +269,13 @@ def install_grub(efi_directory, fw_type):
os.makedirs(install_efi_boot_directory)
# Workaround for some UEFI firmwares
efi_file_source = {"32": os.path.join(install_efi_directory_firmware,
efi_file_source = os.path.join(install_efi_directory_firmware,
efi_bootloader_id,
"grubia32.efi"),
"64": os.path.join(install_efi_directory_firmware,
efi_bootloader_id,
"grubx64.efi")}
efi_grub_file)
efi_file_target = os.path.join(install_efi_boot_directory,
efi_boot_file)
efi_file_target = {"32": os.path.join(install_efi_boot_directory,
"bootia32.efi"),
"64": os.path.join(install_efi_boot_directory,
"bootx64.efi")}
shutil.copy2(efi_file_source[efi_bitness], efi_file_target[efi_bitness])
shutil.copy2(efi_file_source, efi_file_target)
else:
print("Bootloader: grub (bios)")
if libcalamares.globalstorage.value("bootLoader") is None:

View File

@ -0,0 +1,14 @@
---
requirements:
- name: /etc
mode: "0o755"
- name: /var/cache/pacman/pkg
mode: "0o755"
- name: /var/lib/pacman
mode: "0o755"
isRank: true
keyrings:
- archlinux
- manjaro

View File

@ -0,0 +1,295 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# === This file is part of Calamares - <http://github.com/calamares> ===
#
# Copyright 2016, Artoo <artoo@manjaro.org>
# Copyright 2017, Philip Müller <philm@manjaro.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Calamares is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
import os
import shutil
import subprocess
import sys
import re
import libcalamares
from libcalamares.utils import check_target_env_call, target_env_call, debug
from os.path import join
from subprocess import call
class OperationTracker:
def __init__(self):
self._downloaded = 0
self._installed = 0
self._total = 0
self._progress = float(0)
@property
def downloaded(self):
return self._downloaded
@downloaded.setter
def downloaded(self, value):
self._downloaded = value
@property
def installed(self):
return self._installed
@installed.setter
def installed(self, value):
self._installed = value
@property
def total(self):
return self._total
@total.setter
def total(self, value):
self._total = value
@property
def progress(self):
return self._progress
@progress.setter
def progress(self, value):
self._progress = value
def send_progress(self, counter, phase):
for p in range(phase):
if self.total == 0:
continue
step = 0.05
step += 0.95 * (counter / float(self.total))
self.progress += step / self.total
debug("Progress: {}".format(self.progress))
libcalamares.job.setprogress(self.progress)
ON_POSIX = 'posix' in sys.builtin_module_names
class PacmanController:
def __init__(self, root):
self.__root = root
self.__operations = libcalamares.globalstorage.value(
"packageOperations"
)
self.__tracker = OperationTracker()
self.__keyrings = libcalamares.job.configuration.get(
'keyrings',
[]
)
@property
def tracker(self):
return self.__tracker
@property
def root(self):
return self.__root
@property
def operations(self):
return self.__operations
@property
def keyrings(self):
return self.__keyrings
def init_keyring(self):
target_env_call(["pacman-key", "--init"])
def populate_keyring(self):
target_env_call(["pacman-key", "--populate"] + self.keyrings)
def parse_output(self, cmd):
cal_env = os.environ
cal_env["LC_ALL"] = "C"
last = []
phase = 0
process = subprocess.Popen(
cmd,
env=cal_env,
bufsize=1,
stdout=subprocess.PIPE,
close_fds=ON_POSIX
)
for line in iter(process.stdout.readline, b''):
pkgs = re.findall(r'\((\d+)\)', line.decode())
dl = re.findall(r'downloading\s+(.*).pkg.tar.xz', line.decode())
inst = re.findall(r'installing(.*)\.\.\.', line.decode())
if pkgs:
self.tracker.total = (int(pkgs[0]))
debug("Number of packages: {}".format(self.tracker.total))
if dl:
if dl != last:
self.tracker.downloaded += 1
phase = 1
debug("Downloading: {}".format(dl[0]))
debug("Downloaded packages: {}".format(
self.tracker.downloaded
))
self.tracker.send_progress(
self.tracker.downloaded,
phase
)
last = dl
elif inst:
self.tracker.installed += 1
phase = 2
debug("Installing: {}".format(inst[0]))
debug("Installed packages: {}".format(self.tracker.installed))
self.tracker.send_progress(self.tracker.installed, phase)
if process.returncode != 0:
return process.kill()
return None
def install(self, pkglist, local=False):
cachedir = join(self.root, "var/cache/pacman/pkg")
dbdir = join(self.root, "var/lib/pacman")
args = ["pacman", "--noconfirm"]
if local:
args.extend(["-U"])
else:
args.extend(["-Sy"])
args.extend([
"--cachedir",
cachedir,
"--root",
self.root,
"--dbpath",
dbdir
])
cmd = args + pkglist
self.parse_output(cmd)
def remove(self, pkglist):
args = ["chroot", self.root, "pacman", "-Rs", "--noconfirm"]
cmd = args + pkglist
check_target_env_call(cmd)
def run(self):
pkgs = []
for key in self.operations.keys():
if key == "install":
for pkg in self.operations[key]:
pkgs.extend([pkg["package"]])
self.install(pkgs)
elif key == "localInstall":
for pkg in self.operations[key]:
pkgs.extend([pkg["package"]])
self.install(pkgs, local=True)
elif key == "remove":
for pkg in self.operations[key]:
pkgs.extend([pkg["package"]])
self.tracker.total(len(pkgs))
self.remove(pkgs)
elif key == "try_install":
for pkg in self.operations[key]:
pkgs.extend([pkg["package"]])
self.install(pkgs)
elif key == "try_remove":
for pkg in self.operations[key]:
pkgs.extend([pkg["package"]])
self.remove(pkgs)
self.init_keyring()
self.populate_keyring()
return None
class ChrootController:
def __init__(self):
self.__root = libcalamares.globalstorage.value('rootMountPoint')
self.__requirements = libcalamares.job.configuration.get(
'requirements',
[]
)
self.__isRank = libcalamares.job.configuration['isRank']
@property
def root(self):
return self.__root
@property
def isRank(self):
return self.__isRank
@property
def requirements(self):
return self.__requirements
def make_dirs(self):
for target in self.requirements:
dest = self.root + target["name"]
if not os.path.exists(dest):
debug("Create: {}".format(dest))
mod = int(target["mode"], 8)
debug("Mode: {}".format(oct(mod)))
os.makedirs(dest, mode=mod)
def rank_mirrors(self):
call(["pacman-mirrors", "-f", "5"])
def copy_file(self, file):
if os.path.exists(os.path.join("/", file)):
shutil.copy2(
os.path.join("/", file),
os.path.join(self.root, file)
)
def prepare(self):
cal_umask = os.umask(0)
self.make_dirs()
path = join(self.root, "run")
os.chmod(path, 0o755)
os.umask(cal_umask)
self.copy_file('etc/pacman-mirrors.conf')
self.copy_file('etc/resolv.conf')
def run(self):
if self.isRank:
self.rank_mirrors()
self.prepare()
pacman = PacmanController(self.root)
return pacman.run()
def run():
"""
Create chroot dirs and install pacman,
kernel and netinstall selection
"""
targetRoot = ChrootController()
return targetRoot.run()

View File

@ -0,0 +1,6 @@
# Syntax is YAML 1.2
---
type: "job"
name: "chrootcfg"
interface: "python"
script: "main.py" #assumed relative to the current directory

View File

@ -37,6 +37,12 @@ DesktopEnvironment = collections.namedtuple(
desktop_environments = [
DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5
DesktopEnvironment('/usr/bin/startkde', 'kde-plasma'), # KDE Plasma 4
DesktopEnvironment(
'/usr/bin/budgie-desktop', 'budgie-desktop' # Budgie v10
),
DesktopEnvironment(
'/usr/bin/budgie-session', 'budgie-desktop' # Budgie v8
),
DesktopEnvironment('/usr/bin/gnome-session', 'gnome'),
DesktopEnvironment('/usr/bin/startxfce4', 'xfce'),
DesktopEnvironment('/usr/bin/cinnamon-session-cinnamon', 'cinnamon'),
@ -47,8 +53,6 @@ desktop_environments = [
DesktopEnvironment('/usr/bin/lxqt-session', 'lxqt'),
DesktopEnvironment('/usr/bin/pekwm', 'pekwm'),
DesktopEnvironment('/usr/bin/pantheon-session', 'pantheon'),
DesktopEnvironment('/usr/bin/budgie-session', 'budgie-session'),
DesktopEnvironment('/usr/bin/budgie-desktop', 'budgie-desktop'),
DesktopEnvironment('/usr/bin/i3', 'i3'),
DesktopEnvironment('/usr/bin/startdde', 'deepin'),
DesktopEnvironment('/usr/bin/openbox-session', 'openbox')

View File

@ -6,6 +6,7 @@
# Copyright 2014, Aurélien Gâteau <agateau@kde.org>
# Copyright 2016, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Philip Müller <philm@manjaro.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -184,7 +185,7 @@ class FstabGenerator(object):
for partition in self.partitions:
# Special treatment for a btrfs root with @ and @home
# subvolumes
if (partition["fs"] == "btrfs"
if (partition["fs"].lower() == "btrfs"
and partition["mountPoint"] == "/"):
output = subprocess.check_output(['btrfs',
'subvolume',
@ -255,10 +256,34 @@ class FstabGenerator(object):
self.root_is_ssd = is_ssd
if filesystem == "btrfs" and "subvol" in partition:
options="subvol={},".format(partition["subvol"]) + options
if has_luks:
return dict(
device="/dev/mapper/" + partition["luksMapperName"],
mount_point=mount_point,
fs=filesystem,
options=",".join(
["subvol={}".format(partition["subvol"]), options]
),
check=check,
)
else:
return dict(
device="UUID=" + partition["uuid"],
mount_point=mount_point,
fs=filesystem,
options=",".join(
["subvol={}".format(partition["subvol"]), options]
),
check=check,
)
if has_luks:
device="/dev/mapper/" + partition["luksMapperName"]
return dict(device="/dev/mapper/" + partition["luksMapperName"],
mount_point=mount_point or "swap",
fs=filesystem,
options=options,
check=check,
)
else:
device="UUID=" + partition["uuid"]

View File

@ -3,7 +3,7 @@
#
# === This file is part of Calamares - <http://github.com/calamares> ===
#
# Copyright 2014-2015, Philip Müller <philm@manjaro.org>
# Copyright 2014-2017, Philip Müller <philm@manjaro.org>
# Copyright 2015-2017, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Adriaan de Groot <groot@kde.org>
@ -60,10 +60,10 @@ def modify_grub_default(partitions, root_mount_point, distributor):
if have_dracut:
for partition in partitions:
has_luks = "luksMapperName" in partition
if partition["fs"] == "linuxswap" and not has_luks:
if partition["fs"].lower() == "linuxswap" and not has_luks:
swap_uuid = partition["uuid"]
if (partition["fs"] == "linuxswap" and has_luks):
if (partition["fs"].lower() == "linuxswap" and has_luks):
swap_outer_uuid = partition["luksUuid"]
swap_outer_mappername = partition["luksMapperName"]
@ -74,7 +74,7 @@ def modify_grub_default(partitions, root_mount_point, distributor):
else:
for partition in partitions:
has_luks = "luksMapperName" in partition
if partition["fs"] == "linuxswap" and not has_luks:
if partition["fs"].lower() == "linuxswap" and not has_luks:
swap_uuid = partition["uuid"]
if (partition["mountPoint"] == "/" and has_luks):

View File

@ -1,2 +1,2 @@
---
kernel: linux312
kernel: _kernel_

View File

@ -100,6 +100,7 @@ def modify_mkinitcpio_conf(partitions, root_mount_point):
cpu = cpuinfo()
swap_uuid = ""
btrfs = ""
lvm2 = ""
hooks = ["base", "udev", "autodetect", "modconf", "block", "keyboard",
"keymap"]
modules = []
@ -114,14 +115,17 @@ def modify_mkinitcpio_conf(partitions, root_mount_point):
hooks.append("plymouth")
for partition in partitions:
if partition["fs"] == "linuxswap":
if partition["fs"].lower() == "linuxswap":
swap_uuid = partition["uuid"]
if "luksMapperName" in partition:
openswap_hook = True
if partition["fs"] == "btrfs":
if partition["fs"].lower() == "btrfs":
btrfs = "yes"
if "lvm2" in partition["fs"]:
lvm2 = "yes"
if partition["mountPoint"] == "/" and "luksMapperName" in partition:
encrypt_hook = True
@ -137,6 +141,9 @@ def modify_mkinitcpio_conf(partitions, root_mount_point):
):
files.append("/crypto_keyfile.bin")
if lvm2:
hooks.append("lvm2")
if swap_uuid != "":
if encrypt_hook and openswap_hook:
hooks.extend(["openswap"])

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -59,9 +60,9 @@ KeyboardLayoutModel::data( const QModelIndex& index, int role ) const
void
KeyboardLayoutModel::init()
{
QMap< QString, KeyboardGlobal::KeyboardInfo > layouts =
KeyboardGlobal::LayoutsMap layouts =
KeyboardGlobal::getKeyboardLayouts();
for ( QMap< QString, KeyboardGlobal::KeyboardInfo >::const_iterator it = layouts.constBegin();
for ( KeyboardGlobal::LayoutsMap::const_iterator it = layouts.constBegin();
it != layouts.constEnd(); ++it )
{
m_layouts.append( qMakePair( it.key(), it.value() ) );

View File

@ -248,10 +248,58 @@ KeyboardPage::createJobs( const QString& xOrgConfFileName,
}
void
KeyboardPage::guessLayout( const QStringList& langParts )
{
const KeyboardLayoutModel* klm = dynamic_cast< KeyboardLayoutModel* >( ui->listLayout->model() );
bool foundCountryPart = false;
for ( auto countryPart = langParts.rbegin(); !foundCountryPart && countryPart != langParts.rend(); ++countryPart)
{
cDebug() << " .. looking for locale part" << *countryPart;
for ( int i = 0; i < klm->rowCount(); ++i )
{
QModelIndex idx = klm->index( i );
if ( idx.isValid() &&
( idx.data( KeyboardLayoutModel::KeyboardLayoutKeyRole ).toString().compare( *countryPart, Qt::CaseInsensitive ) == 0 ) )
{
cDebug() << " .. matched" << idx.data( KeyboardLayoutModel::KeyboardLayoutKeyRole ).toString();
ui->listLayout->setCurrentIndex( idx );
foundCountryPart = true;
break;
}
}
}
}
void
KeyboardPage::onActivate()
{
ui->listLayout->setFocus();
// Try to preselect a layout, depending on language and locale
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
QString lang = gs->value( "localeConf" ).toMap().value( "LANG" ).toString();
cDebug() << "Got locale language" << lang;
if ( !lang.isEmpty() )
{
// Chop off .codeset and @modifier
int index = lang.indexOf('.');
if ( index >= 0 )
lang.truncate( index );
index = lang.indexOf('@');
if ( index >= 0 )
lang.truncate( index );
lang.replace( '-', '_' ); // Normalize separators
const auto langParts = lang.split( '_' , QString::SkipEmptyParts );
QString country = QLocale::countryToString( QLocale( lang ).country() );
cDebug() << " .. extracted country" << country << "::" << langParts;
guessLayout( langParts );
}
}

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Portions from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org>
@ -63,6 +64,15 @@ protected slots:
QListWidgetItem* previous );
private:
class LayoutItem : public QListWidgetItem
{
public:
QString data;
KeyboardGlobal::KeyboardInfo info;
};
/// Guess a layout based on the split-apart locale
void guessLayout( const QStringList& langParts );
void updateVariants( const QPersistentModelIndex& currentItem,
QString currentVariant = QString() );

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Originally from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org>
@ -44,12 +45,15 @@ public:
QMap< QString, QString > variants;
};
static QMap< QString, KeyboardInfo > getKeyboardLayouts();
using LayoutsMap = QMap< QString, KeyboardInfo >;
static LayoutsMap getKeyboardLayouts();
static QMap< QString, QString > getKeyboardModels();
private:
static QMap< QString, QString > parseKeyboardModels(QString filepath);
static QMap< QString, KeyboardInfo > parseKeyboardLayouts(QString filepath);
static LayoutsMap parseKeyboardLayouts(QString filepath);
};
#endif // KEYBOARDGLOBAL_H

View File

@ -122,7 +122,7 @@ LocaleViewStep::fetchGeoIpTimezone()
if ( m_geoipStyle.isEmpty() || m_geoipStyle == "legacy" )
{
actualUrl.append( "/json" );
actualUrl.append( "/json/" );
handler = new FreeGeoIP;
}
else if ( m_geoipStyle == "json" )
@ -141,6 +141,7 @@ LocaleViewStep::fetchGeoIpTimezone()
setUpPage();
return;
}
cDebug() << "Fetching GeoIP data from" << actualUrl;
QNetworkAccessManager *manager = new QNetworkAccessManager( this );
connect( manager, &QNetworkAccessManager::finished,
@ -151,6 +152,8 @@ LocaleViewStep::fetchGeoIpTimezone()
auto tz = handler->processReply( reply->readAll() );
if ( !tz.first.isEmpty() )
m_startingTimezone = tz;
else
cDebug() << "WARNING: GeoIP lookup at" << reply->url() << "failed.";
}
delete handler;
reply->deleteLater();
@ -159,7 +162,7 @@ LocaleViewStep::fetchGeoIpTimezone()
} );
QNetworkRequest request;
request.setUrl( QUrl::fromUserInput( m_geoipUrl ) );
request.setUrl( QUrl::fromUserInput( actualUrl ) );
request.setAttribute( QNetworkRequest::FollowRedirectsAttribute, true );
manager->get( request );
}

View File

@ -1,4 +1,12 @@
---
# This settings are used to set your default system time zone.
# Time zones are usually located under /usr/share/zoneinfo and
# provided by the 'tzdata' package of your Distribution.
#
# Distributions using systemd can list available
# time zones by using the timedatectl command.
# timedatectl list-timezones
#
# The starting timezone (e.g. the pin-on-the-map) when entering
# the locale page can be set through keys *region* and *zone*.
# If either is not set, defaults to America/New_York.
@ -6,18 +14,24 @@
region: "America"
zone: "New_York"
# Some distros come with a meaningfully commented and easy to parse
# `/etc/locale.gen`, and others ship a separate file
# `/usr/share/i18n/SUPPORTED` with a clean list of supported locales.
# We first try SUPPORTED, and if it doesn't exist, we fall back
# to parsing the lines from `locale.gen`. For distro's that ship
# the `locale.gen` file installed elsewhere, the key *localeGenPath*
# can be used to specify where it is. If not set, the default
# `/etc/locale.gen` is used.
#
#localeGenPath: "/etc/locale.gen"
# GeoIP settings. Leave commented out to disable GeoIP.
# System locales are detected in the following order:
#
# - /usr/share/i18n/SUPPORTED
# - localeGenPath (defaults to /etc/locale.gen if not set)
# - 'locale -a' output
#
# Enable only when your Distribution is using an
# custom path for locale.gen
#localeGenPath: "PATH_TO/locale.gen"
# GeoIP based Language settings:
#
# GeoIP need an working Internet connection.
# This can be managed from `welcome.conf` by adding
# internet to the list of required conditions.
#
# Leave commented out to disable GeoIP.
#
# An HTTP request is made to *geoipUrl* -- depending on the geoipStyle,
# the URL may be modified before use. The request should return
@ -37,7 +51,7 @@ zone: "New_York"
# <Response><TimeZone>Europe/Brussels</TimeZone></Response>
# ```
#
#geoipUrl: "freegeoip.net"
geoipUrl: "freegeoip.net"
# GeoIP style. Leave commented out for the "legacy" interpretation.
# This setting only makes sense if geoipUrl is set, enabliing geoIP.
@ -53,4 +67,4 @@ zone: "New_York"
# The JSON format is provided by freegeoip.net, but that service is
# shutting down in June 2018. There are other providers with the same
# format. XML format is provided for Ubiquity.
#geoipStyle: "legacy"
geoipStyle: "legacy"

View File

@ -65,12 +65,12 @@ def run():
with open("{!s}/etc/locale.gen".format(install_path), "w") as gen:
for line in text:
# always enable en_US
if en_us_locale in line and line[0] == "#":
if line.startswith("#" + en_us_locale):
# uncomment line
line = line[1:].lstrip()
for locale_value in locale_values:
if locale_value in line and line[0] == "#":
if line.startswith("#" + locale_value):
# uncomment line
line = line[1:].lstrip()

View File

@ -6,6 +6,7 @@
# Copyright 2016, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Adriaan de Groot <groot@kde.org>
# Copyright 2017, Philip Mueller <philm@manjaro.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -46,7 +47,7 @@ def run():
luks_root_device = partition["device"]
luks_root_passphrase = partition["luksPassphrase"]
elif "luksMapperName" in partition and\
(partition["mountPoint"] or partition["fs"] == "linuxswap"):
(partition["mountPoint"] or partition["fs"].lower() == "linuxswap"):
additional_luks_devices.append((partition["device"],
partition["luksPassphrase"]))

View File

@ -5,6 +5,7 @@
#
# Copyright 2016, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Philip Mueller <philm@manjaro.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -29,7 +30,7 @@ def write_openswap_conf(partitions, root_mount_point, openswap_conf_path):
mountable_keyfile_device = ""
for partition in partitions:
if partition["fs"] == "linuxswap" and "luksMapperName" in partition:
if partition["fs"].lower() == "linuxswap" and "luksMapperName" in partition:
swap_outer_uuid = partition["luksUuid"]
swap_mapper_name = partition["luksMapperName"]

103
src/modules/mhwdcfg/main.py Normal file
View File

@ -0,0 +1,103 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# === This file is part of Calamares - <http://github.com/calamares> ===
#
# Copyright 2016, Artoo <artoo@manjaro.org>
# Copyright 2016-2017, Philip Müller <philm@manjaro.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Calamares is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
import libcalamares
from libcalamares.utils import target_env_call, debug
from os.path import join
from subprocess import call
class MhwdController:
def __init__(self):
self.__root = libcalamares.globalstorage.value("rootMountPoint")
self.__bus = libcalamares.job.configuration.get('bus', [])
self.__identifier = libcalamares.job.configuration.get(
'identifier',
[]
)
self.__local = libcalamares.job.configuration['local']
self.__repo = libcalamares.job.configuration['repo']
self._driver = libcalamares.job.configuration['driver']
@property
def driver(self):
return self._driver
@driver.setter
def driver(self, value):
self._driver = value
@property
def root(self):
return self.__root
@property
def local(self):
return self.__local
@property
def repo(self):
return self.__repo
@property
def identifier(self):
return self.__identifier
@property
def bus(self):
return self.__bus
def umount(self, mp):
call(["umount", "-l", join(self.root, mp)])
def mount(self, mp):
call(["mount", "-Br", "/" + mp, join(self.root, mp)])
def configure(self, name, id):
cmd = ["mhwd", "-a", str(name), str(self.driver), str(id).zfill(4)]
if self.local:
self.mount("opt")
cmd.extend(["--pmconfig", self.repo])
self.mount("etc/resolv.conf")
target_env_call(cmd)
if self.local:
self.umount("opt")
self.umount("etc/resolv.conf")
def run(self):
for b in self.bus:
for id in self.identifier['net']:
self.configure(b, id)
for id in self.identifier['video']:
self.configure(b, id)
return None
def run():
""" Configure the hardware """
mhwd = MhwdController()
return mhwd.run()

View File

@ -0,0 +1,19 @@
---
bus:
- pci
# - usb
identifier:
net:
- 200
- 280
video:
- 300
- 302
- 380
driver: free
local: true
repo: /opt/pacman-mhwd.conf

View File

@ -0,0 +1,6 @@
# Syntax is YAML 1.2
---
type: "job"
name: "mhwdcfg"
interface: "python"
script: "main.py" #assumed relative to the current directory

View File

@ -2,38 +2,16 @@ find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE)
include(KDEInstallDirs)
include(GenerateExportHeader)
find_package( KF5 REQUIRED CoreAddons )
find_package( Qt5 REQUIRED DBus )
find_package( KF5 REQUIRED Config CoreAddons I18n WidgetsAddons )
# These are needed because KPMcore links publicly against ConfigCore, I18n, IconThemes, KIOCore and Service
find_package( KF5 REQUIRED Config I18n IconThemes KIO Service )
find_package( KPMcore 3.3 )
set_package_properties(
KPMcore PROPERTIES
PURPOSE "For partitioning module"
)
find_package( KPMcore 3.1.50 QUIET )
if ( KPMcore_FOUND )
add_definitions(-DWITH_KPMCORE22)
endif()
find_package( KPMcore 3.0.3 QUIET )
# 3.0.3 and newer has fixes for NVMe support; allow 3.0.2, but warn
# about it .. needs to use a different feature name because it otherwise
# gets reported as KPMcore (the package).
if ( KPMcore_FOUND )
message( STATUS "KPMCore supports NVMe operations" )
add_feature_info( KPMcoreNVMe KPMcore_FOUND "KPMcore with NVMe support" )
else()
find_package( KPMcore 3.0.2 REQUIRED )
message( WARNING "KPMCore 3.0.2 is known to have bugs with NVMe devices" )
add_feature_info( KPMcoreNVMe KPMcore_FOUND "Older KPMcore with no NVMe support" )
endif()
find_library( atasmart_LIB atasmart )
find_library( blkid_LIB blkid )
if( NOT atasmart_LIB )
message( WARNING "atasmart library not found." )
endif()
if( NOT blkid_LIB )
message( WARNING "blkid library not found." )
endif()
include_directories( ${KPMCORE_INCLUDE_DIR} )
include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
@ -93,3 +71,6 @@ calamares_add_plugin( partition
KF5::CoreAddons
SHARED_LIB
)
else()
calamares_skip_module( "partition (missing suitable KPMcore)" )
endif()

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
@ -24,6 +24,7 @@
// KPMcore
#include <kpmcore/core/partition.h>
#include <kpmcore/fs/luks.h>
// Qt
#include <QColor>
@ -86,9 +87,19 @@ colorForPartition( Partition* partition )
return EXTENDED_COLOR;
if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone &&
!partition->fileSystem().uuid().isEmpty() &&
s_partitionColorsCache.contains( partition->fileSystem().uuid() ) )
!partition->fileSystem().uuid().isEmpty() )
{
if ( partition->fileSystem().type() == FileSystem::Luks )
{
FS::luks& luksFs = dynamic_cast< FS::luks& >( partition->fileSystem() );
if ( !luksFs.outerUuid().isEmpty() &&
s_partitionColorsCache.contains( luksFs.outerUuid() ) )
return s_partitionColorsCache[ luksFs.outerUuid() ];
}
if ( s_partitionColorsCache.contains( partition->fileSystem().uuid() ) )
return s_partitionColorsCache[ partition->fileSystem().uuid() ];
}
// No partition-specific color needed, pick one from our list, but skip
// free space: we don't want a partition to change colors if space before
@ -119,8 +130,20 @@ colorForPartition( Partition* partition )
if ( partition->fileSystem().supportGetUUID() != FileSystem::cmdSupportNone &&
!partition->fileSystem().uuid().isEmpty() )
{
if ( partition->fileSystem().type() == FileSystem::Luks )
{
FS::luks& luksFs = dynamic_cast< FS::luks& >( partition->fileSystem() );
if ( !luksFs.outerUuid().isEmpty() )
{
s_partitionColorsCache.insert( luksFs.outerUuid(),
PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ] );
}
}
else
s_partitionColorsCache.insert( partition->fileSystem().uuid(),
PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ] );
}
return PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ];
}

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
@ -116,9 +116,7 @@ createNewPartition( PartitionNode* parent,
PartitionTable::Flags flags )
{
FileSystem* fs = FileSystemFactory::create( fsType, firstSector, lastSector
#ifdef WITH_KPMCORE22
,device.logicalSize()
#endif
);
return new Partition(
parent,
@ -153,9 +151,7 @@ createNewEncryptedPartition( PartitionNode* parent,
FileSystemFactory::create( FileSystem::Luks,
firstSector,
lastSector
#ifdef WITH_KPMCORE22
,device.logicalSize()
#endif
) );
if ( !fs )
{
@ -186,9 +182,7 @@ clonePartition( Device* device, Partition* partition )
partition->fileSystem().type(),
partition->firstSector(),
partition->lastSector()
#ifdef WITH_KPMCORE22
,device->logicalSize()
#endif
);
return new Partition( partition->parent(),
*device,

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*
@ -340,4 +340,26 @@ isEfiSystem()
return QDir( "/sys/firmware/efi/efivars" ).exists();
}
bool
isEfiBootable( const Partition* candidate )
{
/* If bit 17 is set, old-style Esp flag, it's OK */
if ( candidate->activeFlags().testFlag( PartitionTable::FlagEsp ) )
return true;
/* Otherwise, if it's a GPT table, Boot (bit 0) is the same as Esp */
const PartitionNode* root = candidate;
while ( root && !root->isRoot() )
root = root->parent();
// Strange case: no root found, no partition table node?
if ( !root )
return false;
const PartitionTable* table = dynamic_cast<const PartitionTable*>( root );
return table && ( table->type() == PartitionTable::TableType::gpt ) &&
candidate->activeFlags().testFlag( PartitionTable::FlagBoot );
}
} // nmamespace PartUtils

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*
@ -67,6 +67,11 @@ OsproberEntryList runOsprober( PartitionCoreModule* core );
*/
bool isEfiSystem();
/**
* @brief Is the given @p partition bootable in EFI? Depending on
* the partition table layout, this may mean different flags.
*/
bool isEfiBootable( const Partition* candidate );
}
#endif // PARTUTILS_H

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
@ -164,7 +164,18 @@ PartitionCoreModule::doInit()
for ( auto deviceInfo : m_deviceInfos )
deviceInfo->partitionModel->init( deviceInfo->device.data(), m_osproberLines );
m_bootLoaderModel->init( devices );
DeviceList bootLoaderDevices;
for ( DeviceList::Iterator it = devices.begin(); it != devices.end(); ++it)
if ( (*it)->type() != Device::Type::Disk_Device )
{
cDebug() << "Ignoring device that is not Disk_Device to bootLoaderDevices list.";
continue;
}
else
bootLoaderDevices.append(*it);
m_bootLoaderModel->init( bootLoaderDevices );
//FIXME: this should be removed in favor of
// proper KPM support for EFI
@ -504,16 +515,7 @@ PartitionCoreModule::scanForEfiSystemPartitions()
}
QList< Partition* > efiSystemPartitions =
KPMHelpers::findPartitions( devices,
[]( Partition* partition ) -> bool
{
if ( partition->activeFlags().testFlag( PartitionTable::FlagEsp ) )
{
cDebug() << "Found EFI system partition at" << partition->partitionPath();
return true;
}
return false;
} );
KPMHelpers::findPartitions( devices, PartUtils::isEfiBootable );
if ( efiSystemPartitions.isEmpty() )
cDebug() << "WARNING: system is EFI but no EFI system partitions found.";

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
@ -300,6 +300,16 @@ ChoicePage::selectedDevice()
}
void
ChoicePage::hideButtons()
{
m_eraseButton->hide();
m_replaceButton->hide();
m_alongsideButton->hide();
m_somethingElseButton->hide();
}
/**
* @brief ChoicePage::applyDeviceChoice handler for the selected event of the device
* picker. Calls ChoicePage::selectedDevice() to get the current Device*, then
@ -311,7 +321,10 @@ void
ChoicePage::applyDeviceChoice()
{
if ( !selectedDevice() )
{
hideButtons();
return;
}
if ( m_core->isDirty() )
{
@ -342,11 +355,14 @@ ChoicePage::continueApplyDeviceChoice()
// applyDeviceChoice() will be called again momentarily as soon as we handle the
// PartitionCoreModule::reverted signal.
if ( !currd )
{
hideButtons();
return;
}
updateDeviceStatePreview();
// Preview setup done. Now we show/hide choices as needed.
// Preview setup done. Now we show/hide choices as needed.
setupActions();
m_lastSelectedDeviceIndex = m_drivesCombo->currentIndex();
@ -562,7 +578,11 @@ ChoicePage::onLeave()
{
if ( m_bootloaderComboBox.isNull() )
{
m_core->setBootLoaderInstallPath( selectedDevice()->deviceNode() );
auto d_p = selectedDevice();
if ( d_p )
m_core->setBootLoaderInstallPath( d_p->deviceNode() );
else
cDebug() << "WARNING: No device selected for bootloader.";
}
else
{
@ -1156,6 +1176,9 @@ ChoicePage::setupActions()
else
m_deviceInfoWidget->setPartitionTableType( PartitionTable::unknownTableType );
// Manual partitioning is always a possibility
m_somethingElseButton->show();
bool atLeastOneCanBeResized = false;
bool atLeastOneCanBeReplaced = false;
bool atLeastOneIsMounted = false; // Suppress 'erase' if so
@ -1332,18 +1355,16 @@ ChoicePage::updateNextEnabled()
{
bool enabled = false;
auto sm_p = m_beforePartitionBarsView ? m_beforePartitionBarsView->selectionModel() : nullptr;
switch ( m_choice )
{
case NoChoice:
enabled = false;
break;
case Replace:
enabled = m_beforePartitionBarsView->selectionModel()->
currentIndex().isValid();
break;
case Alongside:
enabled = m_beforePartitionBarsView->selectionModel()->
currentIndex().isValid();
enabled = sm_p && sm_p->currentIndex().isValid();
break;
case Erase:
case Manual:

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
*
@ -113,8 +113,12 @@ private:
void setupChoices();
QComboBox* createBootloaderComboBox( QWidget* parentButton );
Device* selectedDevice();
void applyDeviceChoice();
void continueApplyDeviceChoice();
/* Change the UI depending on the device selected. */
void hideButtons(); // Hide everything when no device
void applyDeviceChoice(); // Start scanning new device
void continueApplyDeviceChoice(); // .. called after scan
void updateDeviceStatePreview();
void updateActionChoicePreview( ChoicePage::Choice choice );
void setupActions();

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
@ -43,6 +43,8 @@
#include <QDir>
#include <QListWidgetItem>
#include <QPushButton>
#include <QRegularExpression>
#include <QRegularExpressionValidator>
#include <QSet>
static QSet< FileSystem::Type > s_unmountableFS(
@ -66,6 +68,19 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par
m_ui->encryptWidget->setText( tr( "En&crypt" ) );
m_ui->encryptWidget->hide();
if (m_device->type() == Device::Type::Disk_Device) {
m_ui->lvNameLabel->hide();
m_ui->lvNameLineEdit->hide();
}
if (m_device->type() == Device::Type::LVM_Device) {
/* LVM logical volume name can consist of: letters numbers _ . - +
* It cannot start with underscore _ and must not be equal to . or .. or any entry in /dev/
* QLineEdit accepts QValidator::Intermediate, so we just disable . at the beginning */
QRegularExpression re(QStringLiteral(R"(^(?!_|\.)[\w\-.+]+)"));
QRegularExpressionValidator *validator = new QRegularExpressionValidator(re, this);
m_ui->lvNameLineEdit->setValidator(validator);
}
QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" };
if ( PartUtils::isEfiSystem() )
mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
@ -227,6 +242,10 @@ CreatePartitionDialog::createPartition()
);
}
if (m_device->type() == Device::Type::LVM_Device) {
partition->setPartitionPath(m_device->deviceNode() + QStringLiteral("/") + m_ui->lvNameLineEdit->text().trimmed());
}
PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() );
PartitionInfo::setFormat( partition, true );
@ -242,7 +261,9 @@ CreatePartitionDialog::updateMountPointUi()
FileSystem::Type type = FileSystem::typeForName( m_ui->fsComboBox->currentText() );
enabled = !s_unmountableFS.contains( type );
if ( FS::luks::canEncryptType( type ) )
if ( FileSystemFactory::map()[FileSystem::Type::Luks]->supportCreate() &&
FS::luks::canEncryptType( type ) &&
!m_role.has( PartitionRole::Extended ) )
{
m_ui->encryptWidget->show();
m_ui->encryptWidget->reset();

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>

View File

@ -146,6 +146,16 @@
</spacer>
</item>
<item row="6" column="0">
<widget class="QLabel" name="lvNameLabel">
<property name="text">
<string>LVM LV name</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lvNameLineEdit"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mountPointLabel">
<property name="text">
<string>&amp;Mount Point:</string>
@ -155,7 +165,7 @@
</property>
</widget>
</item>
<item row="6" column="1">
<item row="7" column="1">
<widget class="QComboBox" name="mountPointComboBox">
<property name="editable">
<bool>true</bool>
@ -165,21 +175,21 @@
</property>
</widget>
</item>
<item row="7" column="1">
<item row="8" column="1">
<widget class="QLabel" name="labelMountPoint">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="0">
<item row="9" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Flags:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<item row="9" column="1">
<widget class="QListWidget" name="m_listFlags">
<property name="alternatingRowColors">
<bool>true</bool>
@ -192,7 +202,7 @@
</property>
</widget>
</item>
<item row="9" column="0">
<item row="10" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2015-2016, Teo Mrnjavac <teo@kde.org>
@ -119,7 +119,7 @@ PartitionPage::~PartitionPage()
void
PartitionPage::updateButtons()
{
bool create = false, edit = false, del = false;
bool create = false, createTable = false, edit = false, del = false;
QModelIndex index = m_ui->partitionTreeView->currentIndex();
if ( index.isValid() )
@ -141,11 +141,18 @@ PartitionPage::updateButtons()
edit = !isFree && !isExtended;
del = !isFree;
}
if ( m_ui->deviceComboBox->currentIndex() >= 0 )
{
QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 );
if ( m_core->deviceModel()->deviceForIndex( deviceIndex )->type() != Device::Type::LVM_Device )
createTable = true;
}
m_ui->createButton->setEnabled( create );
m_ui->editButton->setEnabled( edit );
m_ui->deleteButton->setEnabled( del );
m_ui->newPartitionTableButton->setEnabled( m_ui->deviceComboBox->currentIndex() >= 0 );
m_ui->newPartitionTableButton->setEnabled( createTable );
}
void

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
*

View File

@ -1,4 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
@ -408,7 +408,7 @@ PartitionViewStep::onLeave()
.arg( *Calamares::Branding::ShortProductName )
.arg( espMountPoint );
}
else if ( esp && !esp->activeFlags().testFlag( PartitionTable::FlagEsp ) )
else if ( esp && !PartUtils::isEfiBootable( esp ) )
{
message = tr( "EFI system partition flag not set" );
description = tr( "An EFI system partition is necessary to start %1."

Some files were not shown because too many files have changed in this diff Show More