diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts
index 84bc809bb..2048f6af5 100644
--- a/lang/calamares_ca.ts
+++ b/lang/calamares_ca.ts
@@ -484,7 +484,7 @@ L'instal·lador es tancarà i tots els canvis es perdran.
-
+ L'odre s'executa a l'entorn de l'amfitrió i necessita saber el camí de l'arrel, però no hi ha definit el punt de muntatge de l'arrel.
@@ -730,12 +730,12 @@ L'instal·lador es tancarà i tots els canvis es perdran.
- Eliminant la partició %1.
+ Suprimint la partició %1.
- L'instal·lador no ha pogut eliminar la partició %1.
+ L'instal·lador no ha pogut suprimir la partició %1.
@@ -1674,7 +1674,7 @@ L'instal·lador es tancarà i tots els canvis es perdran.
- &Suprimeix
+ E&limina
@@ -1694,7 +1694,7 @@ L'instal·lador es tancarà i tots els canvis es perdran.
-
+ La taula de particions de %1 ja té %2 particions primàries i no se n'hi poden afegir més. Si us plau, suprimiu una partició primària i afegiu-hi una partició ampliada.
diff --git a/lang/calamares_cs_CZ.ts b/lang/calamares_cs_CZ.ts
index a506e76d9..28a88e874 100644
--- a/lang/calamares_cs_CZ.ts
+++ b/lang/calamares_cs_CZ.ts
@@ -484,7 +484,7 @@ Instalační program bude ukončen a všechny změny ztraceny.
-
+ Příkaz bude spuštěn v prostředí hostitele a potřebuje znát popis umístění kořene souborového systému. rootMountPoint ale není zadaný.
@@ -1689,12 +1689,12 @@ Instalační program bude ukončen a všechny změny ztraceny.
-
+ Nevytvářet nový oddíl
-
+ Tabulka oddílů na %1 už obsahuje %2 hlavních oddílů a proto už není možné přidat další. Odeberte jeden z hlavních oddílů a namísto něj vytvořte rozšířený oddíl.
diff --git a/lang/calamares_de.ts b/lang/calamares_de.ts
index 63de0898d..a19100da1 100644
--- a/lang/calamares_de.ts
+++ b/lang/calamares_de.ts
@@ -184,7 +184,7 @@
-
+ &Installieren
@@ -479,12 +479,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Befehl konnte nicht ausgeführt werden.
-
+ Dieser Befehl wird im installierten System ausgeführt und muss daher den Root-Pfad kennen, jedoch wurde kein rootMountPoint definiert.
@@ -492,7 +492,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Job für kontextuale Prozesse
@@ -530,7 +530,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ LVM LV Name
@@ -939,7 +939,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ <html><head/><body><p>Wenn diese Option aktiviert ist, genügt zum Neustart des Systems ein Klick auf <span style=" font-style:italic;">Fertig</span> oder das Schließen des Installationsprogramms.</p></body></html>
@@ -1245,232 +1245,232 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Das Passwort ist zu schwach
-
+ Fehler bei der Speicherzuweisung beim Einrichten von '%1'
-
+ Fehler bei der Speicherzuweisung
-
+ Das Passwort ist dasselbe wie das alte
-
+ Das Passwort ist ein Palindrom
-
+ Das Passwort unterscheidet sich nur durch Groß- und Kleinschreibung
-
+ Das Passwort ist dem alten zu ähnlich
-
+ Das Passwort enthält eine Form des Benutzernamens
-
+ Das Passwort enthält Teile des Klarnamens des Benutzers
-
+ Das Passwort enthält verbotene Wörter
-
+ Das Passwort hat weniger als %1 Stellen
-
+ Das Passwort hat zu wenige Stellen
-
+ Das Passwort enthält weniger als %1 Großbuchstaben
-
+ Das Passwort enthält zu wenige Großbuchstaben
-
+ Das Passwort enthält weniger als %1 Kleinbuchstaben
-
+ Das Passwort enthält zu wenige Kleinbuchstaben
-
+ Das Passwort enthält weniger als %1 nicht-alphanumerische Zeichen
-
+ Das Passwort enthält zu wenige nicht-alphanumerische Zeichen
-
+ Das Passwort hat weniger als %1 Stellen
-
+ Das Passwort ist zu kurz
-
+ Das Passwort wurde schon einmal verwendet
-
+ Das Passwort enthält weniger als %1 verschiedene Zeichenarten
-
+ Das Passwort enthält nicht genügend verschiedene Zeichenarten
-
+ Das Passwort enthält mehr als %1 gleiche Zeichen am Stück
-
+ Das Passwort enthält zu viele gleiche Zeichen am Stück
-
+ Das Passwort enthält mehr als %1 gleiche Zeichenarten am Stück
-
+ Das Passwort enthält zu viele gleiche Zeichenarten am Stück
-
+ Das Passwort enthält eine gleichartige Sequenz von mehr als %1 Zeichen
-
+ Das Passwort enthält eine gleichartige Sequenz von zu großer Länge
-
+ Kein Passwort angegeben
-
+ Zufallszahlen konnten nicht vom Zufallszahlengenerator abgerufen werden
-
+ Passwortgeneration fehlgeschlagen - Zufallszahlen zu schwach für die gewählten Einstellungen
-
+ Das Passwort besteht den Wörterbuch-Test nicht - %1
-
+ Das Passwort besteht den Wörterbuch-Test nicht
-
+ Unbekannte Einstellung - %1
-
+ Unbekannte Einstellung
-
+ Fehlerhafter Integerwert der Einstellung - %1
-
+ Fehlerhafter Integerwert
-
+ Die Einstellung %1 ist kein Integerwert
-
+ Die Einstellung ist kein Integerwert
-
+ Die Einstellung %1 ist keine Zeichenkette
-
+ Die Einstellung ist keine Zeichenkette
-
+ Öffnen der Konfigurationsdatei fehlgeschlagen
-
+ Die Konfigurationsdatei ist falsch strukturiert
-
+ Fataler Fehler
-
+ Unbekannter Fehler
@@ -1689,12 +1689,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Neue Partition kann nicht erstellt werden
-
+ Die Partitionstabelle auf %1 hat bereits %2 primäre Partitionen und weitere können nicht hinzugefügt werden. Bitte entfernen Sie eine primäre Partition und fügen Sie stattdessen eine erweiterte Partition hinzu.
@@ -1800,13 +1800,13 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Job für das Erscheinungsbild von Plasma
-
+ Das Paket für das Erscheinungsbild von KDE Plasma konnte nicht ausgewählt werden
@@ -1824,7 +1824,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Bitte wählen Sie das Erscheinungsbild für den KDE Plasma Desktop. Sie können diesen Schritt auch überspringen und das Erscheinungsbild festlegen, sobald das System installiert ist. Per Klick auf einen Eintrag können Sie sich eine Vorschau dieses Erscheinungsbildes anzeigen lassen.
@@ -1832,7 +1832,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+ Erscheinungsbild
@@ -1841,39 +1841,42 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
-
+
+Dieser Befehl hat keine Ausgabe erzeugt.
-
+
+Ausgabe:
+
-
+ Externes Programm abgestürzt.
-
+ Programm <i>%1</i> abgestürzt.
-
+ Externes Programm konnte nicht gestartet werden.
-
+ Das Programm <i>%1</i> konnte nicht gestartet werden.
-
+ Interner Fehler beim Starten des Programms.
@@ -1883,22 +1886,22 @@ Output:
-
+ Externes Programm konnte nicht abgeschlossen werden.
-
+ Programm <i>%1</i> konnte nicht innerhalb von %2 Sekunden abgeschlossen werden.
-
+ Externes Programm mit Fehlern beendet.
-
+ Befehl <i>%1</i> beendet mit Exit-Code %2.
@@ -2338,7 +2341,7 @@ Output:
-
+ Job für Shell-Prozesse
@@ -2347,7 +2350,7 @@ Output:
slide counter, %1 of %2 (numeric)
-
+ %L1 / %L2
@@ -2371,22 +2374,22 @@ Output:
- Installationsrückmeldung
+ Rückmeldungen zur Installation
- Senden der Installationsrückmeldung
+ Senden der Rückmeldungen zur Installation.
-
+ Interner Fehler bei der Überwachung der Installation.
-
+ Zeitüberschreitung bei HTTP-Anfrage
@@ -2394,28 +2397,28 @@ Output:
-
+ Rückinformationen zum Computer
-
+ Konfiguriere Rückmeldungen zum Computer.
-
+ Fehler bei der Konfiguration der Rückmeldungen zum Computer
-
+ Rückmeldungen zum Computer konnten nicht korrekt konfiguriert werden, Skriptfehler %1.
-
+ Rückmeldungen zum Computer konnten nicht korrekt konfiguriert werden, Calamares-Fehler %1.
@@ -2433,14 +2436,14 @@ Output:
-
+ <html><head/><body><p>Ist diese Option aktiviert, werden <span style=" font-weight:600;">keinerlei Informationen</span> über Ihre Installation gesendet.</p></body></html>
- Text Label
+ TextLabel
@@ -2452,27 +2455,27 @@ Output:
-
+ <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Klicken sie hier für weitere Informationen über Benutzer-Rückmeldungen</span></a></p></body></html>
-
+ Rückinformationen über die Installation helfen %1 festzustellen, wieviele Menschen es benutzen und auf welcher Hardware sie %1 installieren. Mit den beiden letzten Optionen gestatten Sie die Erhebung kontinuierlicher Informationen über Ihre bevorzugte Software. Um zu prüfen, welche Informationen gesendet werden, klicken Sie bitte auf das Hilfesymbol neben dem jeweiligen Abschnitt.
- Wenn Sie diese Option auswählen, senden Sie Informationen zu Ihrer Installation und Hardware. Diese Informationen werden nur einmal nach Abschluss der Installation gesendet.
+ Wenn Sie diese Option auswählen, senden Sie Informationen zu Ihrer Installation und Hardware. Diese Informationen werden <b>nur einmalig</b> nach Abschluss der Installation gesendet.
- Wenn Sie dies auswählen, senden Sie regelmäßig Informationen zu Ihrer Installation, Hardware und Anwendungen an %1.
+ Wenn Sie diese Option auswählen, senden Sie <b>regelmäßig</b> Informationen zu Installation, Hardware und Anwendungen an %1.
- Wenn Sie dies auswählen, senden Sie regelmäßig Informationen über Ihre Installation, Hardware, Anwendungen und Nutzungsmuster an %1.
+ Wenn Sie diese Option auswählen, senden Sie <b>regelmäßig</b> Informationen zu Installation, Hardware, Anwendungen und Nutzungsmuster an %1.
@@ -2480,7 +2483,7 @@ Output:
- Feedback
+ Rückmeldung
@@ -2575,7 +2578,7 @@ Output:
-
+ <h1>%1</h1><br/><strong>%2<br/>für %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac <teo@kde.org><br/>Copyright 2017 Adriaan de Groot <groot@kde.org><br/>Dank an: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg und das <a href="https://www.transifex.com/calamares/calamares/">Calamares Übersetzerteam</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> wird unterstützt von <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.
diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts
index 7d70ee86f..267fbe127 100644
--- a/lang/calamares_hr.ts
+++ b/lang/calamares_hr.ts
@@ -484,7 +484,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.
-
+ Naredba se pokreće u okruženju domaćina i treba znati korijenski put, međutim, rootMountPoint nije definiran.
@@ -1689,12 +1689,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.
-
+ Ne mogu stvoriti novu particiju
-
+ Particijska tablica %1 već ima %2 primarne particije i nove se više ne mogu dodati. Molimo vas da uklonite jednu primarnu particiju i umjesto nje dodate proširenu particiju.
diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts
index d84de4f44..db81fb3f4 100644
--- a/lang/calamares_ru.ts
+++ b/lang/calamares_ru.ts
@@ -1688,12 +1688,12 @@ The installer will quit and all changes will be lost.
-
+ Не удалось создать новый раздел
-
+ В таблице разделов на %1 уже %2 первичных разделов, больше добавить нельзя. Удалите один из первичных разделов и добавьте расширенный раздел.
diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo
index 3b9a54b24..85b9b49f0 100644
Binary files a/lang/python/de/LC_MESSAGES/python.mo and b/lang/python/de/LC_MESSAGES/python.mo differ
diff --git a/lang/python/de/LC_MESSAGES/python.po b/lang/python/de/LC_MESSAGES/python.po
index 4dec5011e..ac9777c23 100644
--- a/lang/python/de/LC_MESSAGES/python.po
+++ b/lang/python/de/LC_MESSAGES/python.po
@@ -20,7 +20,7 @@ msgstr ""
#: src/modules/umount/main.py:40
msgid "Unmount file systems."
-msgstr ""
+msgstr "Dateisysteme aushängen."
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
@@ -48,7 +48,7 @@ msgstr "Pakete installieren "
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] "Installiere ein Paket"
-msgstr[1] "Installiere %(num)dPakete "
+msgstr[1] "Installiere %(num)dPakete."
#: src/modules/packages/main.py:69
#, python-format
diff --git a/lang/python/eo/LC_MESSAGES/python.mo b/lang/python/eo/LC_MESSAGES/python.mo
index ad2749b80..968d29e20 100644
Binary files a/lang/python/eo/LC_MESSAGES/python.mo and b/lang/python/eo/LC_MESSAGES/python.mo differ
diff --git a/lang/python/eo/LC_MESSAGES/python.po b/lang/python/eo/LC_MESSAGES/python.po
index b93015618..b0622a9aa 100644
--- a/lang/python/eo/LC_MESSAGES/python.po
+++ b/lang/python/eo/LC_MESSAGES/python.po
@@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-16 11:40-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: tradukanto , 2018\n"
+"Last-Translator: Kurt Ankh Phoenix , 2018\n"
"Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo
index fa1a277e8..ca254403f 100644
Binary files a/lang/python/he/LC_MESSAGES/python.mo and b/lang/python/he/LC_MESSAGES/python.mo differ
diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po
index c98599da2..43a0b9ae2 100644
--- a/lang/python/he/LC_MESSAGES/python.po
+++ b/lang/python/he/LC_MESSAGES/python.po
@@ -50,6 +50,7 @@ msgid_plural "Installing %(num)d packages."
msgstr[0] "מתקין חבילה אחת."
msgstr[1] "מתקין %(num)d חבילות."
msgstr[2] "מתקין %(num)d חבילות."
+msgstr[3] "מתקין %(num)d חבילות."
#: src/modules/packages/main.py:69
#, python-format
@@ -58,3 +59,4 @@ msgid_plural "Removing %(num)d packages."
msgstr[0] "מסיר חבילה אחת."
msgstr[1] "מסיר %(num)d חבילות."
msgstr[2] "מסיר %(num)d חבילות."
+msgstr[3] "מסיר %(num)d חבילות."
diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp
index 7afe5eef8..cbee61129 100644
--- a/src/libcalamaresui/modulesystem/ModuleManager.cpp
+++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp
@@ -290,10 +290,10 @@ ModuleManager::loadModules()
// If it's a ViewModule, it also appends the ViewStep to the ViewManager.
thisModule->loadSelf();
m_loadedModulesByInstanceKey.insert( instanceKey, thisModule );
- Q_ASSERT( thisModule->isLoaded() );
if ( !thisModule->isLoaded() )
{
cWarning() << "Module" << moduleName << "loading FAILED";
+ Q_ASSERT( thisModule->isLoaded() );
continue;
}
}
diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo
index 8eac3bf2f..f06ac012c 100644
Binary files a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.mo differ
diff --git a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po
index 4fcdcfd71..495a42896 100644
--- a/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po
+++ b/src/modules/dummypythonqt/lang/eo/LC_MESSAGES/dummypythonqt.po
@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-07 09:14-0400\n"
+"POT-Creation-Date: 2018-05-16 11:40-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: tradukanto , 2018\n"
+"Last-Translator: Kurt Ankh Phoenix , 2018\n"
"Language-Team: Esperanto (https://www.transifex.com/calamares/teams/20061/eo/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp
index b7bcdd457..5272d83fd 100644
--- a/src/modules/netinstall/NetInstallPage.cpp
+++ b/src/modules/netinstall/NetInstallPage.cpp
@@ -24,25 +24,17 @@
#include "PackageModel.h"
#include "ui_page_netinst.h"
-#include "GlobalStorage.h"
#include "JobQueue.h"
+
#include "utils/Logger.h"
#include "utils/Retranslator.h"
#include "utils/YamlUtils.h"
-#include
-#include
-#include
-
#include
#include
#include
#include
-#include
-#include
-#include
-#include
#include
@@ -128,12 +120,8 @@ NetInstallPage::selectedPackages() const
}
void
-NetInstallPage::loadGroupList()
+NetInstallPage::loadGroupList( const QString& confUrl )
{
- QString confUrl(
- Calamares::JobQueue::instance()->globalStorage()->value(
- "groupsUrl" ).toString() );
-
QNetworkRequest request;
request.setUrl( QUrl( confUrl ) );
// Follows all redirects except unsafe ones (https to http).
diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h
index 58308412d..3dc8ee46e 100644
--- a/src/modules/netinstall/NetInstallPage.h
+++ b/src/modules/netinstall/NetInstallPage.h
@@ -25,13 +25,14 @@
#include "PackageTreeItem.h"
#include "Typedefs.h"
-#include
#include
#include
+#include
// required forward declarations
class QByteArray;
class QNetworkReply;
+class QString;
namespace Ui
{
@@ -46,10 +47,12 @@ public:
void onActivate();
- // Retrieves the groups, with name, description and packages, from
- // the remote URL configured in the settings. Assumes the URL is already
- // in the global storage. This should be called before displaying the page.
- void loadGroupList();
+ /** @brief Retrieves the groups, with name, description and packages
+ *
+ * Loads data from the given URL. This should be called before
+ * displaying the page.
+ */
+ void loadGroupList( const QString& url );
// Sets the "required" state of netinstall data. Influences whether
// corrupt or unavailable data causes checkReady() to be emitted
diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp
index 50e08486b..de4480cbb 100644
--- a/src/modules/netinstall/NetInstallViewStep.cpp
+++ b/src/modules/netinstall/NetInstallViewStep.cpp
@@ -22,6 +22,8 @@
#include "JobQueue.h"
#include "GlobalStorage.h"
+
+#include "utils/CalamaresUtils.h"
#include "utils/Logger.h"
#include "NetInstallPage.h"
@@ -179,17 +181,15 @@ NetInstallViewStep::onLeave()
void
NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{
- m_widget->setRequired(
- configurationMap.contains( "required" ) &&
- configurationMap.value( "required" ).type() == QVariant::Bool &&
- configurationMap.value( "required" ).toBool() );
+ m_widget->setRequired( CalamaresUtils::getBool( configurationMap, "required", false ) );
- if ( configurationMap.contains( "groupsUrl" ) &&
- configurationMap.value( "groupsUrl" ).type() == QVariant::String )
+ QString groupsUrl = CalamaresUtils::getString( configurationMap, "groupsUrl" );
+ if ( !groupsUrl.isEmpty() )
{
- Calamares::JobQueue::instance()->globalStorage()->insert(
- "groupsUrl", configurationMap.value( "groupsUrl" ).toString() );
- m_widget->loadGroupList();
+ // Keep putting groupsUrl into the global storage,
+ // even though it's no longer used for in-module data-passing.
+ Calamares::JobQueue::instance()->globalStorage()->insert( "groupsUrl", groupsUrl );
+ m_widget->loadGroupList( groupsUrl );
}
}
diff --git a/src/modules/netinstall/netinstall.conf b/src/modules/netinstall/netinstall.conf
index f5977a267..fe99eb2be 100644
--- a/src/modules/netinstall/netinstall.conf
+++ b/src/modules/netinstall/netinstall.conf
@@ -1,7 +1,10 @@
---
# This is the URL that is retrieved to get the netinstall groups-and-packages
-# data (which should be in the format described in netinstall.yaml).
-groupsUrl: http://chakraos.org/netinstall.php
+# data (which should be in the format described in netinstall.yaml), e.g.:
+# groupsUrl: http://example.org/netinstall.php
+# or it can be a locally installed file:
+# groupsUrl: file:///usr/share/calamares/netinstall.yaml
+# groupsUrl: file:///usr/share/calamares/netinstall.yaml
# If the installation can proceed without netinstall (e.g. the Live CD
# can create a working installed system, but netinstall is preferred
diff --git a/src/modules/netinstall/page_netinst.ui b/src/modules/netinstall/page_netinst.ui
index 15d27cfb4..3aa4e57ec 100644
--- a/src/modules/netinstall/page_netinst.ui
+++ b/src/modules/netinstall/page_netinst.ui
@@ -35,9 +35,9 @@
-
- 11
-
+
+ 11
+
diff --git a/src/modules/users/CreateUserJob.cpp b/src/modules/users/CreateUserJob.cpp
index d4d299e39..119028059 100644
--- a/src/modules/users/CreateUserJob.cpp
+++ b/src/modules/users/CreateUserJob.cpp
@@ -1,6 +1,7 @@
/* === This file is part of Calamares - ===
*
* Copyright 2014-2016, Teo Mrnjavac
+ * Copyright 2018, Adriaan de Groot
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -146,20 +147,21 @@ CreateUserJob::exec()
}
}
- int ec = CalamaresUtils::System::instance()->
- targetEnvCall( { "useradd",
- "-m",
- "-U",
- "-c",
- m_fullName,
- m_userName } );
- if ( ec )
- return Calamares::JobResult::error( tr( "Cannot create user %1." )
- .arg( m_userName ),
- tr( "useradd terminated with error code %1." )
- .arg( ec ) );
+ QStringList useradd{ "useradd", "-m", "-U" };
+ QString shell = gs->value( "userShell" ).toString();
+ if ( !shell.isEmpty() )
+ useradd << "-s" << shell;
+ useradd << "-c" << m_fullName;
+ useradd << m_userName;
- ec = CalamaresUtils::System::instance()->
+ auto pres = CalamaresUtils::System::instance()->targetEnvCommand( useradd );
+ if ( pres.getExitCode() )
+ {
+ cError() << "useradd failed" << pres.getExitCode();
+ return pres.explainProcess( useradd, 10 /* bogus timeout */ );
+ }
+
+ int ec = CalamaresUtils::System::instance()->
targetEnvCall( { "usermod",
"-aG",
defaultGroups,
diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h
index 5990d8693..817f73d0b 100644
--- a/src/modules/users/UsersPage.h
+++ b/src/modules/users/UsersPage.h
@@ -52,6 +52,12 @@ public:
void setAutologinDefault( bool checked );
void setReusePasswordDefault( bool checked );
+ /** @brief Process entries in the passwordRequirements config entry
+ *
+ * Called once for each item in the config entry, which should
+ * be a key-value pair. What makes sense as a value depends on
+ * the key. Supported keys are documented in users.conf.
+ */
void addPasswordCheck( const QString& key, const QVariant& value );
protected slots:
diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp
index 015d7e997..37d86819e 100644
--- a/src/modules/users/UsersViewStep.cpp
+++ b/src/modules/users/UsersViewStep.cpp
@@ -22,9 +22,11 @@
#include "UsersPage.h"
+#include "utils/CalamaresUtils.h"
#include "utils/Logger.h"
-#include "JobQueue.h"
+
#include "GlobalStorage.h"
+#include "JobQueue.h"
CALAMARES_PLUGIN_FACTORY_DEFINITION( UsersViewStepFactory, registerPlugin(); )
@@ -181,5 +183,12 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap )
m_widget->addPasswordCheck( i.key(), i.value() );
}
}
+
+ QString shell( QLatin1Literal( "/bin/bash" ) ); // as if it's not set at all
+ if ( configurationMap.contains( "userShell" ) )
+ shell = CalamaresUtils::getString( configurationMap, "userShell" );
+ // Now it might be explicitly set to empty, which is ok
+
+ Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell );
}
diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf
index 6111a6e80..0c40faeff 100644
--- a/src/modules/users/users.conf
+++ b/src/modules/users/users.conf
@@ -72,5 +72,14 @@ passwordRequirements:
minLength: -1 # Password at least this many characters
maxLength: -1 # Password at most this many characters
libpwquality:
- - minlen=8
- - minclass=2
+ - minlen=0
+ - minclass=0
+
+# Shell to be used for the regular user of the target system.
+# There are three possible kinds of settings:
+# - unset (i.e. commented out, the default), act as if set to /bin/bash
+# - empty (explicit), don't pass shell information to useradd at all
+# and rely on a correct configuration file in /etc/default/useradd
+# - set, non-empty, use that path as shell. No validation is done
+# that the shell actually exists or is executable.
+# userShell: /bin/bash