Compare commits
335 Commits
developmen
...
3.1.x-stab
Author | SHA1 | Date | |
---|---|---|---|
|
ee72adcfb5 | ||
|
e59e6abcc8 | ||
|
33543afb2e | ||
|
d56ec80794 | ||
|
a48b1eacdd | ||
|
4121a108ab | ||
|
311f13d479 | ||
|
3026b04f44 | ||
|
4f16d65a8b | ||
|
17fd10cdb1 | ||
|
faf21ce438 | ||
|
be5ad6944e | ||
|
9d1c3e2669 | ||
|
e7e4a8d783 | ||
|
adf59ec657 | ||
|
9f04ba92fc | ||
|
0cd2c440f1 | ||
|
f5fa62feef | ||
|
2e07c28db0 | ||
|
666ea16303 | ||
|
78671a1547 | ||
|
84a29ddfec | ||
|
a206167690 | ||
|
b489adfc81 | ||
|
da2a177243 | ||
|
06f646bffd | ||
|
5cb0cc4f66 | ||
|
6e27e9af2b | ||
|
c8b4e13a5b | ||
|
0f138c1481 | ||
|
f5479d44a0 | ||
|
e801c19280 | ||
|
7a8ae69ccf | ||
|
47ed3630cb | ||
|
d5d6a0eac3 | ||
|
85d60158fa | ||
|
ce1e8fa499 | ||
|
5ebd629307 | ||
|
d213924beb | ||
|
01f2f966ea | ||
|
b147e2f011 | ||
|
3edd6160b7 | ||
|
b3ab2dfaab | ||
|
6f950e5e38 | ||
|
0e72dcfc10 | ||
|
e43de173d2 | ||
|
95e3b7650c | ||
|
5359bab006 | ||
|
921440375a | ||
|
aeb936e1c0 | ||
|
d66094267f | ||
|
2fa9eb603b | ||
|
a2b70ee1d4 | ||
|
92fa40b922 | ||
|
57e5e9582f | ||
|
ab67b7d2f1 | ||
|
decf83d403 | ||
|
1e00813341 | ||
|
eaea0e93ce | ||
|
fa6728b47c | ||
|
174800b262 | ||
|
ca4dd17139 | ||
|
c53e3c2c54 | ||
|
a199da7aac | ||
|
db4bbde6a1 | ||
|
6560494bff | ||
|
daff029024 | ||
|
80a1286833 | ||
|
bfcfcf7ee3 | ||
|
084a7ea651 | ||
|
39d73e1882 | ||
|
fcc23b98d2 | ||
|
3450f0b963 | ||
|
80b1a7e0b6 | ||
|
ff08c8ae83 | ||
|
6c00ce7e30 | ||
|
82c0321122 | ||
|
402d891aaa | ||
|
c4405eafa3 | ||
|
d0db22342b | ||
|
5f85b41740 | ||
|
dfd60d46f9 | ||
|
9b8a194e39 | ||
|
d348633b14 | ||
|
83e6dfc81e | ||
|
362b5f44a2 | ||
|
c85ecce1e7 | ||
|
a9e1f48c51 | ||
|
154aa4b0bd | ||
|
0e7f95a5ab | ||
|
3ef23344c3 | ||
|
633f70e93e | ||
|
4cd564655a | ||
|
073196822a | ||
|
2f7ac598a3 | ||
|
6fba81ca0d | ||
|
17e76677c7 | ||
|
e3a86c6dfc | ||
|
6e2d89afd4 | ||
|
4f34c68a14 | ||
|
ef84c63f69 | ||
|
a776284dfa | ||
|
5100f32ebe | ||
|
47347c77fa | ||
|
3b15884f83 | ||
|
e6e1324353 | ||
|
50dc94995b | ||
|
f3154252f5 | ||
|
a937313b32 | ||
|
c103f80df9 | ||
|
a92d8ad57c | ||
|
08d6536845 | ||
|
b6c1e4dbd7 | ||
|
8948134649 | ||
|
9cc8a65577 | ||
|
a62143f62b | ||
|
42d5e6d1c4 | ||
|
0cfca31cac | ||
|
aa35224ab1 | ||
|
9c79a961df | ||
|
f33aba0d5b | ||
|
1b98974f07 | ||
|
1919c2a712 | ||
|
99868756cd | ||
|
fc119c1fae | ||
|
71d08a89a9 | ||
|
d6d8e73532 | ||
|
b29643d49b | ||
|
cb36c54755 | ||
|
9860922496 | ||
|
c150c61c59 | ||
|
4f71b9741e | ||
|
a7e59f8656 | ||
|
8bb6dc6d36 | ||
|
7ff814790d | ||
|
b28edfdc8e | ||
|
3f2bba4e33 | ||
|
854e6d3883 | ||
|
f6cbf48b17 | ||
|
843706e38d | ||
|
a5604aa978 | ||
|
5be4a00f62 | ||
|
0a278ca546 | ||
|
ce1caeaf63 | ||
|
5d7db27c06 | ||
|
7991e4548b | ||
|
47ba304b0c | ||
|
a377c3234e | ||
|
bccb9443b0 | ||
|
b3488f8e85 | ||
|
8de9849e9a | ||
|
9d906e7964 | ||
|
cc5adb6586 | ||
|
f048772020 | ||
|
faf065205b | ||
|
38f5af3c82 | ||
|
e57107187c | ||
|
82626d7639 | ||
|
ac179343d6 | ||
|
c75dbd83e0 | ||
|
cd3e631027 | ||
|
59588672ed | ||
|
36950f6dd9 | ||
|
7ea82be77a | ||
|
7f7ab50356 | ||
|
d4e8e4f472 | ||
|
aea947a517 | ||
|
96c9d744e4 | ||
|
5614c897ec | ||
|
61e2f285ed | ||
|
f2fd8c744b | ||
|
69f51cb909 | ||
|
17f1f0f0b8 | ||
|
d0c7577fb4 | ||
|
ea7a45baa6 | ||
|
b1ce6c3df1 | ||
|
b140080eff | ||
|
019fd67992 | ||
|
d682ee20de | ||
|
1479fc974e | ||
|
49e0d0d504 | ||
|
8373620cca | ||
|
ffb599ff36 | ||
|
8e28df0f22 | ||
|
f93bff0a5f | ||
|
c7a323e466 | ||
|
182c3bdcd0 | ||
|
df819f2efb | ||
|
76aa860b73 | ||
|
af582c104f | ||
|
e57579c92f | ||
|
7f08ea9d15 | ||
|
35c1ab61bf | ||
|
70b098a2b0 | ||
|
47a79b9cd9 | ||
|
742fa9a75b | ||
|
f4d0ab47ec | ||
|
e8d803b866 | ||
|
11f9c588d2 | ||
|
9817dba3af | ||
|
971a77bdcd | ||
|
1591a1c8cf | ||
|
b99fa43e6a | ||
|
8823938c8f | ||
|
2dbcee346d | ||
|
839a34dacf | ||
|
9b2778eecc | ||
|
33040dbec0 | ||
|
8f6d08d23e | ||
|
06739955bb | ||
|
7195054bfd | ||
|
9ad46eca55 | ||
|
49cdaf10d6 | ||
|
98d58215ad | ||
|
945a96bb51 | ||
|
6adb590f5d | ||
|
ae15c17060 | ||
|
1415ec69be | ||
|
0659fc72b8 | ||
|
24c877b36e | ||
|
1ee2a76ef3 | ||
|
4d29526206 | ||
|
e9d146e359 | ||
|
36f87f5f35 | ||
|
c8d043f6df | ||
|
bfaaf15314 | ||
|
3c2275f0d7 | ||
|
e9db1f3650 | ||
|
1f41a58532 | ||
|
901e53da76 | ||
|
99118e06e6 | ||
|
624552c168 | ||
|
d49e791346 | ||
|
c1747c81b4 | ||
|
20ce3e4c47 | ||
|
75bcaea423 | ||
|
33fc1ba08a | ||
|
7499e44046 | ||
|
31470eabde | ||
|
93e46baa4a | ||
|
0440765680 | ||
|
170b6cadc2 | ||
|
368101a73e | ||
|
87e4e3c4a0 | ||
|
a57b08c200 | ||
|
82243914de | ||
|
6c941fc4c9 | ||
|
e6c1125988 | ||
|
ed42185927 | ||
|
297cf45bba | ||
|
213c65676e | ||
|
188b9efd79 | ||
|
a9e4315665 | ||
|
f73171ac4c | ||
|
56fbec7b55 | ||
|
6d0965ef3f | ||
|
44368db30a | ||
|
9afa2935cd | ||
|
39c9f82c9c | ||
|
026fa922d2 | ||
|
07de427aab | ||
|
163cf52900 | ||
|
cdf77c8a0d | ||
|
07fd7135e3 | ||
|
bbba9e60ee | ||
|
0bd31b0404 | ||
|
b6e0e226a1 | ||
|
041db6e3d7 | ||
|
423c7b57e3 | ||
|
e0c5e81b5b | ||
|
84b96b4f18 | ||
|
c0b7b0bc27 | ||
|
45e7363dfb | ||
|
8d93c34031 | ||
|
555f0ba6cf | ||
|
b95503065f | ||
|
2e9fe3f185 | ||
|
e21338d81e | ||
|
bbef3d8abc | ||
|
e91be5bd12 | ||
|
27602cf832 | ||
|
9ae4755b1c | ||
|
206a89e06c | ||
|
19e41a3c71 | ||
|
a2c7256406 | ||
|
f71602ec6c | ||
|
811b1422e9 | ||
|
3f614ee3a6 | ||
|
3a5cb47081 | ||
|
c0898c308b | ||
|
4a35035396 | ||
|
93ecf0d44d | ||
|
601f61fefa | ||
|
645ba95989 | ||
|
b1169dc48c | ||
|
b935c7db79 | ||
|
1b8b5aab13 | ||
|
ebfa1e2838 | ||
|
130eb43b26 | ||
|
9a5221bbd8 | ||
|
fce053439c | ||
|
a1b2a71267 | ||
|
0956ea5dec | ||
|
c9946117cd | ||
|
7a24975654 | ||
|
a5b4e3f518 | ||
|
0153c47e29 | ||
|
11dd15f123 | ||
|
36a96fedfb | ||
|
a37896da49 | ||
|
97b06e3101 | ||
|
c06903e168 | ||
|
b4a63ecb28 | ||
|
5eb56733b8 | ||
|
4ed06d4fe3 | ||
|
ec2094d768 | ||
|
8632c3d609 | ||
|
d935b7df68 | ||
|
9dfbc54fda | ||
|
94b8ad3b6e | ||
|
77fb264129 | ||
|
0c29233062 | ||
|
cc4ab32350 | ||
|
5610e274ba | ||
|
8627f291ca | ||
|
045ec0408d | ||
|
7ed780014d | ||
|
5adf8775fa | ||
|
cda9e2f0c1 | ||
|
ff8be85b08 | ||
|
d50a27cb4c | ||
|
587681b14c | ||
|
d7c8ff5a45 | ||
|
6b44320bfd | ||
|
295cf12b9a |
@ -12,7 +12,7 @@ services:
|
||||
|
||||
notifications:
|
||||
irc:
|
||||
- "chat.freenode.net#calamares"
|
||||
- "chat.freenode.net#manjaro"
|
||||
|
||||
install:
|
||||
- docker build -t calamares .
|
||||
|
@ -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} )
|
||||
|
@ -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 )
|
||||
|
@ -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
@ -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.
|
8
data/49-nopasswd-calamares.rules
Normal 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
@ -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
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
if [ $(which pkexec) ]; then
|
||||
pkexec --disable-internal-agent "/usr/bin/calamares" "$@"
|
||||
else
|
||||
/usr/bin/calamares "$@"
|
||||
fi
|
18
data/images/state-error.svg
Normal 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
@ -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 |
18
data/images/state-warning.svg
Normal 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
@ -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 |
@ -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
|
||||
@ -59,46 +58,39 @@ modules-search: [ local ]
|
||||
# instances are lifted.
|
||||
# YAML: list of lists of strings.
|
||||
sequence:
|
||||
- show:
|
||||
- welcome
|
||||
# - dummypythonqt
|
||||
- locale
|
||||
- keyboard
|
||||
- partition
|
||||
- users
|
||||
- summary
|
||||
- exec:
|
||||
# - dummycpp
|
||||
# - dummyprocess
|
||||
# - dummypython
|
||||
# - dummypythonqt
|
||||
- partition
|
||||
- mount
|
||||
- unpackfs
|
||||
- machineid
|
||||
- fstab
|
||||
- locale
|
||||
- keyboard
|
||||
- localecfg
|
||||
# - luksbootkeyfile
|
||||
# - luksopenswaphookcfg
|
||||
# - dracutlukscfg
|
||||
# - plymouthcfg
|
||||
- initcpiocfg
|
||||
- initcpio
|
||||
- users
|
||||
- displaymanager
|
||||
- networkcfg
|
||||
- hwclock
|
||||
- services
|
||||
# - dracut
|
||||
- initramfs
|
||||
# - grubcfg
|
||||
- bootloader
|
||||
- umount
|
||||
- show:
|
||||
# - webview@owncloud
|
||||
- finished
|
||||
- show:
|
||||
- welcome
|
||||
- locale
|
||||
- keyboard
|
||||
- partition
|
||||
- users
|
||||
- summary
|
||||
- exec:
|
||||
- partition
|
||||
- mount
|
||||
- unpackfs
|
||||
- machineid
|
||||
- fstab
|
||||
- locale
|
||||
- keyboard
|
||||
- localecfg
|
||||
- luksopenswaphookcfg
|
||||
- luksbootkeyfile
|
||||
- plymouthcfg
|
||||
- initcpiocfg
|
||||
- initcpio
|
||||
- users
|
||||
- displaymanager
|
||||
- mhwdcfg
|
||||
- networkcfg
|
||||
- hwclock
|
||||
- services
|
||||
- grubcfg
|
||||
- bootloader
|
||||
- postcfg
|
||||
- umount
|
||||
- show:
|
||||
- finished
|
||||
|
||||
# A branding component is a directory, either in SHARE/calamares/branding or in
|
||||
# /etc/calamares/branding (the latter takes precedence). The directory must contain a
|
||||
@ -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
|
||||
|
23
src/branding/manjaro/branding.desc
Normal 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"
|
BIN
src/branding/manjaro/languages.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
src/branding/manjaro/logo.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
131
src/branding/manjaro/show.qml
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
BIN
src/branding/manjaro/slide1.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
src/branding/manjaro/slide2.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
src/branding/manjaro/slide3.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
src/branding/manjaro/slide4.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
src/branding/manjaro/slide5.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
src/branding/manjaro/squid.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
@ -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>
|
||||
|
@ -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() )
|
||||
|
@ -55,7 +55,10 @@ enum ImageType : int
|
||||
PartitionReplaceOs,
|
||||
PartitionTable,
|
||||
BootEnvironment,
|
||||
Squid
|
||||
Squid,
|
||||
StatusOk, // Icons for the requirements checker
|
||||
StatusWarning,
|
||||
StatusError
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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_bootloader_id,
|
||||
"grubia32.efi"),
|
||||
"64": os.path.join(install_efi_directory_firmware,
|
||||
efi_bootloader_id,
|
||||
"grubx64.efi")}
|
||||
efi_file_source = os.path.join(install_efi_directory_firmware,
|
||||
efi_bootloader_id,
|
||||
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:
|
||||
|
14
src/modules/chrootcfg/chrootcfg.conf
Normal 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
|
295
src/modules/chrootcfg/main.py
Normal 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()
|
6
src/modules/chrootcfg/module.desc
Normal 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
|
@ -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')
|
||||
|
@ -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"]
|
||||
|
||||
|
@ -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):
|
||||
|
@ -1,2 +1,2 @@
|
||||
---
|
||||
kernel: linux312
|
||||
kernel: _kernel_
|
||||
|
@ -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"])
|
||||
|
@ -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() ) );
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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() );
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 );
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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"]))
|
||||
|
||||
|
@ -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
@ -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()
|
19
src/modules/mhwdcfg/mhwdcfg.conf
Normal 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
|
6
src/modules/mhwdcfg/module.desc
Normal 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
|
@ -2,94 +2,75 @@ 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.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 )
|
||||
|
||||
add_subdirectory( tests )
|
||||
|
||||
calamares_add_plugin( partition
|
||||
TYPE viewmodule
|
||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||
SOURCES
|
||||
core/BootLoaderModel.cpp
|
||||
core/ColorUtils.cpp
|
||||
core/DeviceList.cpp
|
||||
core/DeviceModel.cpp
|
||||
core/KPMHelpers.cpp
|
||||
core/PartitionActions.cpp
|
||||
core/PartitionCoreModule.cpp
|
||||
core/PartitionInfo.cpp
|
||||
core/PartitionIterator.cpp
|
||||
core/PartitionModel.cpp
|
||||
core/PartUtils.cpp
|
||||
gui/BootInfoWidget.cpp
|
||||
gui/ChoicePage.cpp
|
||||
gui/CreatePartitionDialog.cpp
|
||||
gui/DeviceInfoWidget.cpp
|
||||
gui/EditExistingPartitionDialog.cpp
|
||||
gui/EncryptWidget.cpp
|
||||
gui/PartitionPage.cpp
|
||||
gui/PartitionBarsView.cpp
|
||||
gui/PartitionLabelsView.cpp
|
||||
gui/PartitionSizeController.cpp
|
||||
gui/PartitionSplitterWidget.cpp
|
||||
gui/PartitionViewStep.cpp
|
||||
gui/PrettyRadioButton.cpp
|
||||
gui/ScanningDialog.cpp
|
||||
gui/ReplaceWidget.cpp
|
||||
jobs/ClearMountsJob.cpp
|
||||
jobs/ClearTempMountsJob.cpp
|
||||
jobs/CreatePartitionJob.cpp
|
||||
jobs/CreatePartitionTableJob.cpp
|
||||
jobs/DeletePartitionJob.cpp
|
||||
jobs/FillGlobalStorageJob.cpp
|
||||
jobs/FormatPartitionJob.cpp
|
||||
jobs/PartitionJob.cpp
|
||||
jobs/ResizePartitionJob.cpp
|
||||
jobs/SetPartitionFlagsJob.cpp
|
||||
UI
|
||||
gui/ChoicePage.ui
|
||||
gui/CreatePartitionDialog.ui
|
||||
gui/CreatePartitionTableDialog.ui
|
||||
gui/EditExistingPartitionDialog.ui
|
||||
gui/EncryptWidget.ui
|
||||
gui/PartitionPage.ui
|
||||
gui/ReplaceWidget.ui
|
||||
LINK_PRIVATE_LIBRARIES
|
||||
kpmcore
|
||||
calamaresui
|
||||
KF5::CoreAddons
|
||||
SHARED_LIB
|
||||
find_package( KPMcore 3.3 )
|
||||
set_package_properties(
|
||||
KPMcore PROPERTIES
|
||||
PURPOSE "For partitioning module"
|
||||
)
|
||||
|
||||
if ( KPMcore_FOUND )
|
||||
include_directories( ${KPMCORE_INCLUDE_DIR} )
|
||||
include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
|
||||
|
||||
add_subdirectory( tests )
|
||||
|
||||
calamares_add_plugin( partition
|
||||
TYPE viewmodule
|
||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||
SOURCES
|
||||
core/BootLoaderModel.cpp
|
||||
core/ColorUtils.cpp
|
||||
core/DeviceList.cpp
|
||||
core/DeviceModel.cpp
|
||||
core/KPMHelpers.cpp
|
||||
core/PartitionActions.cpp
|
||||
core/PartitionCoreModule.cpp
|
||||
core/PartitionInfo.cpp
|
||||
core/PartitionIterator.cpp
|
||||
core/PartitionModel.cpp
|
||||
core/PartUtils.cpp
|
||||
gui/BootInfoWidget.cpp
|
||||
gui/ChoicePage.cpp
|
||||
gui/CreatePartitionDialog.cpp
|
||||
gui/DeviceInfoWidget.cpp
|
||||
gui/EditExistingPartitionDialog.cpp
|
||||
gui/EncryptWidget.cpp
|
||||
gui/PartitionPage.cpp
|
||||
gui/PartitionBarsView.cpp
|
||||
gui/PartitionLabelsView.cpp
|
||||
gui/PartitionSizeController.cpp
|
||||
gui/PartitionSplitterWidget.cpp
|
||||
gui/PartitionViewStep.cpp
|
||||
gui/PrettyRadioButton.cpp
|
||||
gui/ScanningDialog.cpp
|
||||
gui/ReplaceWidget.cpp
|
||||
jobs/ClearMountsJob.cpp
|
||||
jobs/ClearTempMountsJob.cpp
|
||||
jobs/CreatePartitionJob.cpp
|
||||
jobs/CreatePartitionTableJob.cpp
|
||||
jobs/DeletePartitionJob.cpp
|
||||
jobs/FillGlobalStorageJob.cpp
|
||||
jobs/FormatPartitionJob.cpp
|
||||
jobs/PartitionJob.cpp
|
||||
jobs/ResizePartitionJob.cpp
|
||||
jobs/SetPartitionFlagsJob.cpp
|
||||
UI
|
||||
gui/ChoicePage.ui
|
||||
gui/CreatePartitionDialog.ui
|
||||
gui/CreatePartitionTableDialog.ui
|
||||
gui/EditExistingPartitionDialog.ui
|
||||
gui/EncryptWidget.ui
|
||||
gui/PartitionPage.ui
|
||||
gui/ReplaceWidget.ui
|
||||
LINK_PRIVATE_LIBRARIES
|
||||
kpmcore
|
||||
calamaresui
|
||||
KF5::CoreAddons
|
||||
SHARED_LIB
|
||||
)
|
||||
else()
|
||||
calamares_skip_module( "partition (missing suitable KPMcore)" )
|
||||
endif()
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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() ) )
|
||||
return s_partitionColorsCache[ 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() )
|
||||
s_partitionColorsCache.insert( partition->fileSystem().uuid(),
|
||||
PARTITION_COLORS[ colorIdx % NUM_PARTITION_COLORS ] );
|
||||
{
|
||||
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 ];
|
||||
}
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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,
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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.";
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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:
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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>
|
||||
|
@ -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>&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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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>
|
||||
*
|
||||
|
@ -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."
|
||||
|