diff --git a/CHANGES b/CHANGES
index bc01163ae..cddcc9551 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,13 +3,23 @@ contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.2.0. The release notes on the
website will have to do for older versions.
-
-# 3.2.14 (unreleased) #
+# 3.2.15 (unreleased) #
This release contains contributions from (alphabetically by first name):
+
+## Core ##
+
+## Modules ##
+
+
+# 3.2.14 (2019-09-30) #
+
+This release contains contributions from (alphabetically by first name):
+ - Andrius Štikonas
- Harald Sitter
## Core ##
+ - No changes to core functionality
## Modules ##
@@ -18,6 +28,11 @@ This release contains contributions from (alphabetically by first name):
- *packagechooser* module can now be custom-labeled in the overall
progress (left-hand column). #1228
- *displaymanager* module now recognizes KDE Plasma 5.17.
+ - *displaymanager* module now can handle Wayland sessions and can detect
+ sessions from their .desktop files. #1247 #1248
+ - *unpackfs* now has special handling for *sourcefs* setting "file"
+ (so you can copy single files or directories that are on the source
+ system, directly to the target). #1188 #1181
# 3.2.13 (2019-08-30) #
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6d290abf5..64e149cd8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,7 +40,7 @@
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
project( CALAMARES
- VERSION 3.2.13.1
+ VERSION 3.2.14
LANGUAGES C CXX )
set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development
diff --git a/ci/RELEASE.sh b/ci/RELEASE.sh
index 78fc1f7ce..f79b0ed4a 100755
--- a/ci/RELEASE.sh
+++ b/ci/RELEASE.sh
@@ -1,5 +1,7 @@
#! /bin/sh
#
+### USAGE
+#
# Release script for Calamares
#
# This attempts to perform the different steps of the RELEASE.md
@@ -11,15 +13,21 @@
#
# None of the "update stuff" is done by this script; in preparation
# for the release, you should have already done:
-# - updating the version
-# - pulling translations
-# - updating the language list
-# - switching to the right branch
+# * updating the version
+# * pulling translations
+# * updating the language list
+# * switching to the right branch
#
-# You can influence the script a little with environment variables:
-# - BUILD_DEFAULT set to false to avoid first build with gcc
-# - BUILD_CLANG set to false to avoid second build with clang
-# - BUILD_ONLY set to true to break after building
+# You can influence the script a little with these options:
+# * `-B` do not build (before tagging)
+# * `-P` do not package (tag, sign, tarball)
+#
+# The build / package settings can be influenced via environment variables:
+# * BUILD_DEFAULT set to `false` to avoid first build with gcc
+# * BUILD_CLANG set to `false` to avoid second build with clang
+# * BUILD_ONLY set to `true` to break after building
+#
+### END USAGE
test -d .git || { echo "Not at top-level." ; exit 1 ; }
test -d src/modules || { echo "No src/modules." ; exit 1 ; }
@@ -30,6 +38,23 @@ test -z "$BUILD_DEFAULT" && BUILD_DEFAULT=true
test -z "$BUILD_CLANG" && BUILD_CLANG=true
test -z "$BUILD_ONLY" && BUILD_ONLY=false
+while getopts "hBP" opt ; do
+ case "$opt" in
+ h|\?)
+ sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0"
+ return 0
+ ;;
+ B)
+ BUILD_DEFAULT=false
+ BUILD_CLANG=false
+ ;;
+ P)
+ BUILD_ONLY=true
+ ;;
+ esac
+done
+
+
### Setup
#
#
@@ -63,11 +88,21 @@ if test "x$BUILD_ONLY" = "xtrue" ; then
exit 1
fi
+if test -f "$BUILDDIR/CMakeCache.txt" ; then
+ # Some build has created it, so that's good
+ :
+else
+ # Presumably -B was given; just do the cmake part
+ rm -rf "$BUILDDIR"
+ mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
+ ( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; }
+fi
+
### Get version number for this release
#
#
V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// )
-test -n "$V" || { echo "Could not obtain version." ; exit 1 ; }
+test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; }
### Create signed tag
#
diff --git a/lang/calamares_is.ts b/lang/calamares_is.ts
index 00ba48462..874e9adcb 100644
--- a/lang/calamares_is.ts
+++ b/lang/calamares_is.ts
@@ -99,12 +99,12 @@
-
+ Endurhlaða stílblað
-
+ Greinar viðmótshluta
@@ -117,7 +117,7 @@
-
+ Setja upp
@@ -130,7 +130,7 @@
-
+ Verk mistókst (%1)
@@ -253,7 +253,7 @@
-
+ Uppsetning mistókst
@@ -288,7 +288,7 @@
-
+ Halda áfram með uppsetningu?
@@ -298,12 +298,12 @@
-
+ &Setja upp núna
-
+ &Setja upp
@@ -318,7 +318,7 @@
-
+ Hætta við uppsetningu?
@@ -1181,7 +1181,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.
-
+ Uppsetningu lokið
@@ -1191,12 +1191,12 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.
-
+ Uppsetningu á %1 er lokið.
- Uppsetningu af %1 er lokið.
+ Uppsetningu á %1 er lokið.
@@ -1916,7 +1916,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.
-
+ Valdir pakkar
@@ -1929,7 +1929,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.
-
+ Pakkar
@@ -2112,7 +2112,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.
-
+ Útbú&a
@@ -2310,7 +2310,7 @@ Uppsetningarforritið mun hætta og allar breytingar tapast.
-
+ Útlit og hegðun
@@ -2438,7 +2438,7 @@ Output:
-
+ (enginn tengipunktur)
@@ -3052,7 +3052,7 @@ Output:
-
+ Frátökueining
@@ -3222,7 +3222,7 @@ Output:
-
+ Veldu tungumál forrits og kerfis
@@ -3232,7 +3232,7 @@ Output:
-
+ Styr&kja
@@ -3247,7 +3247,7 @@ Output:
-
+ Opna vefsvæði með upplýsingum um útgáfuna
@@ -3282,17 +3282,17 @@ Output:
-
+ <h1>Velkomin til Calamares uppsetningarforritið fyrir %1</h1>
-
+ <h1>Velkomin í %1 uppsetninguna.</h1>
-
+ Um %1 uppsetninguna
@@ -3302,7 +3302,7 @@ Output:
-
+ <h1>%1</h1><br/><strong>%2<br/>fyrir %3</strong><br/><br/>Höfundarréttur 2014-2017 Teo Mrnjavac <teo@kde.org><br/>Höfundarréttur 2017-2019 Adriaan de Groot <groot@kde.org><br/>Þakkir til <a href="https://calamares.io/team/">Calamares teymisinsm</a> og <a href="https://www.transifex.com/calamares/calamares/">allra þýðenda Calamares</a>.<br/><br/>Þróun <a href="https://calamares.io/">Calamares</a> er studd af <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.
diff --git a/lang/calamares_ml.ts b/lang/calamares_ml.ts
index cd78a094c..ca755e70d 100644
--- a/lang/calamares_ml.ts
+++ b/lang/calamares_ml.ts
@@ -9,7 +9,7 @@
- ഈ സിസ്റ്റം ഒരു <strong>ഇ.എഫ്.ഐ</strong> ബൂട്ട് എൻവയോൺമെന്റ് ഉപയോഗിച്ചാണ് ആരംഭിച്ചത്.<br><br>ഒരു ഇ.എഫ്.ഐ എൻവയോൺമെൻറിൽ നിന്നും സ്റ്റാർട്ടപ്പ് ക്രമീകരിക്കുന്നതിന് ,ഒരു ഇ.എഫ്.ഐ സിസ്റ്റം പാർട്ടീഷനിൽ ഈ ഇൻസ്റ്റാളർ <strong>ഗ്രബ്</strong> അല്ലെങ്കിൽ <strong>സിസ്റ്റംഡി-ബൂട്ട്</strong> പോലെയുള്ള ഒരു ബൂട്ട് ലോഡർ ആപ്ലിക്കേഷൻ വിന്യസിക്കണം.നിങ്ങൾ മാനുവൽ പാർട്ടീഷനിംഗ് തിരഞ്ഞെടുത്തിട്ടില്ലെങ്കിൽ ഇത് യാന്ത്രികമായി നടക്കേണ്ടതാണ്,അത്തരം സന്ദർഭങ്ങളിൽ നിങ്ങൾ അത് തിരഞ്ഞെടുക്കണം അല്ലെങ്കിൽ സ്വന്തമായി സൃഷ്ടിക്കണം.
+ ഈ സിസ്റ്റം ഒരു <strong>ഇ.എഫ്.ഐ</strong> ബൂട്ട് എൻവയോൺമെന്റ് ഉപയോഗിച്ചാണ് ആരംഭിച്ചത്.<br>ഒരു ഇ.എഫ്.ഐ എൻവയോൺമെൻറിൽ നിന്നും സ്റ്റാർട്ടപ്പ് ക്രമീകരിക്കുന്നതിന്, ഒരു ഇ.എഫ്.ഐ സിസ്റ്റം പാർട്ടീഷനിൽ ഈ ഇൻസ്റ്റാളർ <strong>ഗ്രബ്</strong> അല്ലെങ്കിൽ <strong>systemd-boot</strong> പോലെയുള്ള ഒരു ബൂട്ട് ലോഡർ ആപ്ലിക്കേഷൻ വിന്യസിക്കണം.നിങ്ങൾ മാനുവൽ പാർട്ടീഷനിംഗ് തിരഞ്ഞെടുത്തിട്ടില്ലെങ്കിൽ ഇത് യാന്ത്രികമായി നടക്കേണ്ടതാണ്,അത്തരം സന്ദർഭങ്ങളിൽ നിങ്ങൾ അത് തിരഞ്ഞെടുക്കണം അല്ലെങ്കിൽ സ്വന്തമായി സൃഷ്ടിക്കണം.<br>
@@ -63,12 +63,12 @@
- ഗ്ലോബൽ സ്റ്റോറേജ്
+ GlobalStorage
- ജോബ് ക്യൂ
+ JobQueue
@@ -238,7 +238,7 @@
- റദ്ദാക്കുക (%C)
+ റദ്ദാക്കുക (&C)
@@ -402,7 +402,7 @@ The installer will quit and all changes will be lost.
-
+ അജ്ഞാതമായ പിശക്
@@ -719,7 +719,7 @@ The installer will quit and all changes will be lost.
-
+ എൻക്രിപ്റ്റ് (&c)
@@ -803,7 +803,7 @@ The installer will quit and all changes will be lost.
-
+ <strong>%2</strong> (%3) -ൽ പുതിയ <strong>%1</strong> പാർട്ടീഷൻ ടേബിൾ ഉണ്ടാക്കുക.
@@ -813,7 +813,7 @@ The installer will quit and all changes will be lost.
-
+ %1 ൽ പാർട്ടീഷൻ പട്ടിക സൃഷ്ടിക്കുന്നതിൽ ഇൻസ്റ്റാളർ പരാജയപ്പെട്ടു.
@@ -1069,7 +1069,7 @@ The installer will quit and all changes will be lost.
-
+ സിസ്റ്റം എൻക്രിപ്റ്റ് ചെയ്യുക (&c)
@@ -1170,7 +1170,7 @@ The installer will quit and all changes will be lost.
-
+ <h1>ഇൻസ്റ്റാളേഷൻ പരാജയപ്പെട്ടു</h1><br/> നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ %1 സജ്ജമാക്കിയിട്ടില്ല.<br/>പിശക് സന്ദേശം ഇതായിരുന്നു: %2.
@@ -1229,22 +1229,22 @@ The installer will quit and all changes will be lost.
-
+ %1 GiB ഡിസ്ക്സ്പെയ്സ് എങ്കിലും ലഭ്യമായിരിക്കണം.
-
+ ആവശ്യത്തിനു ഡിസ്ക്സ്പെയ്സ് ലഭ്യമല്ല. %1 GiB എങ്കിലും വേണം.
-
+ %1 GiB RAM എങ്കിലും ലഭ്യമായിരിക്കണം.
-
+ സിസ്റ്റത്തിൽ ആവശ്യത്തിനു RAM ലഭ്യമല്ല. %1 GiB എങ്കിലും വേണം.
@@ -1391,7 +1391,7 @@ The installer will quit and all changes will be lost.
- റദ്ദാക്കുക (%C)
+ റദ്ദാക്കുക (&C)
@@ -1515,7 +1515,7 @@ The installer will quit and all changes will be lost.
-
+ സംഖ്യ & തീയതി രീതി %1 ആയി ക്രമീകരിക്കും.
@@ -1531,12 +1531,12 @@ The installer will quit and all changes will be lost.
-
+ മാറ്റുക (&C)...
-
+ സമയപദ്ധതി %1/%2 ആയി ക്രമീകരിക്കുക.<br/>
@@ -1598,17 +1598,17 @@ The installer will quit and all changes will be lost.
-
+ നെറ്റ്വർക്ക് ഇൻസ്റ്റാളേഷൻ. (അപ്രാപ്തമാക്കി: പാക്കേജ് ലിസ്റ്റുകൾ നേടാനായില്ല, നിങ്ങളുടെ നെറ്റ്വർക്ക് കണക്ഷൻ പരിശോധിക്കുക)
-
+ നെറ്റ്വർക്ക് ഇൻസ്റ്റാളേഷൻ. (അപ്രാപ്തമാക്കി: അസാധുവായ ഗ്രൂപ്പുകളുടെ ഡാറ്റ ലഭിച്ചു)
-
+ നെറ്റ്വർക്ക് ഇൻസ്റ്റാളേഷൻ. (പ്രവർത്തനരഹിതമാക്കി: തെറ്റായ ക്രമീകരണം)
@@ -1629,7 +1629,7 @@ The installer will quit and all changes will be lost.
-
+ <html><head/><body><p>ഒരു ബാച്ച് ഐഡന്റിഫയർ ഇവിടെ നൽകുക. ഇത് ടാർഗെറ്റ് സിസ്റ്റത്തിൽ സംഭരിക്കും</p></body></html>
@@ -1690,7 +1690,7 @@ The installer will quit and all changes will be lost.
-
+ പാസ്വേഡ് അക്ഷരങ്ങളുടെ കേസ് മാറ്റങ്ങളിൽ മാത്രം വ്യത്യാസപ്പെട്ടിരിക്കുന്നു
@@ -1775,7 +1775,7 @@ The installer will quit and all changes will be lost.
-
+ രഹസ്യവാക്കിൽ ആവശ്യത്തിനു അക്ഷരങ്ങൾ ഇല്ല
@@ -1790,12 +1790,12 @@ The installer will quit and all changes will be lost.
-
+ രഹസ്യവാക്കിൽ %1 തവണ ഒരേ തരം അക്ഷരം ആവർത്തിക്കുന്നു
-
+ രഹസ്യവാക്കിൽ ഒരുപാട് തവണ ഒരേ തരം അക്ഷരം ആവർത്തിക്കുന്നു
@@ -1815,12 +1815,12 @@ The installer will quit and all changes will be lost.
-
+ RNG ഉപകരണത്തിൽ നിന്ന് ആകസ്മിക സംഖ്യകൾ എടുക്കാൻ പറ്റുന്നില്ല.
-
+ രഹസ്യവാക്ക് സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു - ആവശ്യത്തിനു entropy ഇല്ല.
@@ -1850,42 +1850,42 @@ The installer will quit and all changes will be lost.
-
+ തെറ്റായ സംഖ്യ
-
+ %1 സജ്ജീകരണം സംഖ്യയല്ല
-
+ സജ്ജീകരണം സംഖ്യയല്ല
-
+ %1 സജ്ജീകരണം ഒരു വാക്കല്ലാ
-
+ സജ്ജീകരണം ഒരു വാക്കല്ലാ
-
+ ക്രമീകരണ ഫയൽ തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു
-
+ ക്രമീകരണ ഫയൽ പാഴാണു
-
+ അപകടകരമായ പിഴവ്
@@ -1918,12 +1918,12 @@ The installer will quit and all changes will be lost.
-
+ പാക്കേജ് തിരഞ്ഞെടുക്കൽ
-
+ പട്ടികയിൽ നിന്നും ഒരു ഉത്പന്നം തിരഞ്ഞെടുക്കുക. തിരഞ്ഞെടുത്ത ഉത്പന്നം ഇൻസ്റ്റാൾ ചെയ്യപ്പെടുക.
@@ -1931,7 +1931,7 @@ The installer will quit and all changes will be lost.
-
+ പാക്കേജുകൾ
@@ -1977,7 +1977,7 @@ The installer will quit and all changes will be lost.
-
+ <small>ഒരേ പാസ്വേഡ് രണ്ടുതവണ നൽകുക, അതുവഴി ടൈപ്പിംഗ് പിശകുകൾ പരിശോധിക്കാൻ കഴിയും.ഒരു നല്ല പാസ്വേഡിൽ അക്ഷരങ്ങൾ, അക്കങ്ങൾ, ചിഹ്നനം എന്നിവയുടെ മിശ്രിതം അടങ്ങിയിരിക്കും, കുറഞ്ഞത് എട്ട് പ്രതീകങ്ങളെങ്കിലും നീളമുണ്ടായിരിക്കണം, കൃത്യമായ ഇടവേളകളിൽ അവ മാറ്റണം.</small>
@@ -2020,7 +2020,7 @@ The installer will quit and all changes will be lost.
-
+ ഹോം
@@ -2060,7 +2060,7 @@ The installer will quit and all changes will be lost.
-
+ ലഭ്യമായ സ്ഥലം
@@ -2099,7 +2099,7 @@ The installer will quit and all changes will be lost.
-
+ സ്റ്റോറേജ് ഉപകരണം (&v):
@@ -2134,32 +2134,32 @@ The installer will quit and all changes will be lost.
-
+ വോള്യം ഗ്രൂപ്പിന്റെ വലുപ്പം മാറ്റുക
-
+ വോള്യം ഗ്രൂപ്പ് നിഷ്ക്രിയമാക്കുക
-
+ വോള്യം ഗ്രൂപ്പ് നീക്കം ചെയ്യുക
-
+ ബൂട്ട്ലോഡർ ഇവിടെ ഇൻസ്റ്റാൾ ചെയ്യുക (&n):
-
+ %1ൽ ഒരു പുതിയ പാർട്ടീഷൻ ടേബിൾ നിർമ്മിക്കണമെന്ന് താങ്കൾക്കുറപ്പാണോ?
-
+ പുതിയ പാർട്ടീഷൻ നിർമ്മിക്കാനായില്ല
@@ -2187,12 +2187,12 @@ The installer will quit and all changes will be lost.
-
+ ഡിസ്ക് <strong>മായ്ക്കുക</strong>എന്നിട്ട് %1 ഇൻസ്റ്റാൾ ചെയ്യുക.
-
+ ഒരു പാർട്ടീഷൻ %1 ഉപയോഗിച്ച് <strong>പുനഃസ്ഥാപിക്കുക.</strong>
@@ -2207,22 +2207,22 @@ The installer will quit and all changes will be lost.
-
+ ഡിസ്ക് <strong>%2</strong> (%3) <strong>മായ്ച്ച് </strong> %1 ഇൻസ്റ്റാൾ ചെയ്യുക.
-
+ <strong>%2</strong> (%3) ഡിസ്കിലെ ഒരു പാർട്ടീഷൻ %1 ഉപയോഗിച്ച് <strong>മാറ്റിസ്ഥാപിക്കുക</strong>.
-
+ <strong>%1 </strong>(%2) ഡിസ്കിലെ <strong>സ്വമേധയാ</strong> പാർട്ടീഷനിംഗ്.
-
+ ഡിസ്ക് <strong>%1</strong> (%2)
@@ -2237,12 +2237,12 @@ The installer will quit and all changes will be lost.
-
+ ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷനൊന്നും ക്രമീകരിച്ചിട്ടില്ല
-
+ %1 ആരംഭിക്കാൻ ഒരു ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ ആവശ്യമാണ്.<br/><br/>ഒരു ഇഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ ക്രമീകരിക്കുന്നതിന്,തിരികെ പോയി <strong>ഇ എസ് പി</strong> ഫ്ലാഗും മൗണ്ട് പോയിന്റ് <strong>%2</strong> ഉം ആയിട്ടുള്ള ഒരു FAT32 ഫയൽസിസ്റ്റം തിരഞ്ഞെടുക്കുക അല്ലെങ്കിൽ സൃഷ്ടിക്കുക.<br/><br/>ഒരു ഇഎഫ്ഐ സിസ്റ്റം പാർട്ടീഷൻ സജ്ജീകരിക്കാതെ നിങ്ങൾക്ക് തുടരാം, പക്ഷേ നിങ്ങളുടെ സിസ്റ്റം ആരംഭിക്കുന്നതിൽ പരാജയപ്പെട്ടേക്കാം.
@@ -2257,7 +2257,7 @@ The installer will quit and all changes will be lost.
-
+ ബൂട്ട് പാർട്ടീഷൻ എൻക്രിപ്റ്റ് ചെയ്യപ്പെട്ടിട്ടില്ല
@@ -2320,17 +2320,17 @@ The installer will quit and all changes will be lost.
-
+ ഫയലുകൾ ഭാവിയിലേക്കായി സംരക്ഷിക്കുന്നു ...
-
+ ഭാവിയിലേക്കായി സംരക്ഷിക്കാനായി ഫയലുകളൊന്നും ക്രമീകരിച്ചിട്ടില്ല.
-
+ ക്രമീകരിക്കപ്പെട്ട ഫയലുകളെല്ലാം സംരക്ഷിക്കാനായില്ല.
@@ -2404,18 +2404,18 @@ Output:
-
+ സ്വതേയുള്ള കീബോർഡ് തരം
-
+ സ്വതേയുള്ളത്
-
+ അജ്ഞാതം
@@ -2470,17 +2470,17 @@ Output:
-
+ %1 എന്ന് പേരുള്ള വോള്യം ഗ്രൂപ്പ് നീക്കം ചെയ്യുക.
-
+ <strong>%1</strong> എന്ന് പേരുള്ള വോള്യം ഗ്രൂപ്പ് നീക്കം ചെയ്യുക.
-
+ '%1' എന്ന് പേരുള്ള വോള്യം ഗ്രൂപ്പ് നീക്കം ചെയ്യുന്നതിൽ ഇൻസ്റ്റാളർ പരാജയപ്പെട്ടു.
@@ -2568,7 +2568,7 @@ Output:
-
+ അസാധുവായ ക്രമീകരണം
@@ -2657,7 +2657,7 @@ Output:
-
+ വോള്യം ഗ്രൂപ്പിന്റെ വലുപ്പം മാറ്റുക
@@ -2684,27 +2684,27 @@ Output:
-
+ %1 സജ്ജീകരിക്കുന്നതിനുള്ള ഏറ്റവും കുറഞ്ഞ ആവശ്യങ്ങൾ ഈ കമ്പ്യൂട്ടർ നിറവേറ്റുന്നില്ല.<br/>സജ്ജീകരണം തുടരാനാവില്ല. <a href="#details">വിവരങ്ങൾ...</a>
-
+ %1 ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനുള്ള ഏറ്റവും കുറഞ്ഞ ആവശ്യങ്ങൾ ഈ കമ്പ്യൂട്ടർ നിറവേറ്റുന്നില്ല.<br/>ഇൻസ്റ്റളേഷൻ തുടരാനാവില്ല. <a href="#details">വിവരങ്ങൾ...</a>
-
+ %1 സജ്ജീകരിക്കുന്നതിനുള്ള ചില ആവശ്യങ്ങൾ ഈ കമ്പ്യൂട്ടർ നിറവേറ്റുന്നില്ല.<br/>സജ്ജീകരണം തുടരാം, പക്ഷേ ചില സവിശേഷതകൾ നിഷ്ക്രിയമായിരിക്കാം.
-
+ %1 ഇൻസ്റ്റാൾ ചെയ്യാൻ ശുപാർശ ചെയ്യപ്പെട്ടിട്ടുള്ള ആവശ്യങ്ങൾ ഈ കമ്പ്യൂട്ടർ നിറവേറ്റുന്നില്ല.<br/>ഇൻസ്റ്റളേഷൻ തുടരാം, പക്ഷേ ചില സവിശേഷതകൾ നിഷ്ക്രിയമായിരിക്കാം.
-
+ ഈ പ്രക്രിയ താങ്കളോട് ചില ചോദ്യങ്ങൾ ചോദിക്കുകയും %2 താങ്കളുടെ കമ്പ്യൂട്ടറിൽ സജ്ജീകരിക്കുകയും ചെയ്യും.
@@ -2898,7 +2898,7 @@ Output:
-
+ റൂട്ട് അക്കൗണ്ട് നിഷ്ക്രിയമാക്കാനായില്ല.
@@ -2936,7 +2936,7 @@ Output:
-
+ സമയപദ്ധതി സജ്ജമാക്കാനായില്ല.
@@ -2946,12 +2946,12 @@ Output:
-
+ സമയപദ്ധതി സജ്ജമാക്കാനായില്ല,
-
+ എഴുതുന്നതിനായി /etc/timezone തുറക്കാനായില്ല
@@ -2976,7 +2976,7 @@ Output:
-
+ താങ്കൾ സജ്ജീകരണപ്രക്രിയ ആരംഭിച്ചതിനുശേഷം എന്ത് സംഭവിക്കും എന്നതിന്റെ അവലോകനമാണിത്.
@@ -2989,7 +2989,7 @@ Output:
-
+ ചുരുക്കം
@@ -2997,12 +2997,12 @@ Output:
-
+ ഇൻസ്റ്റളേഷനെ പറ്റിയുള്ള പ്രതികരണം
-
+ ഇൻസ്റ്റളേഷനെ പറ്റിയുള്ള പ്രതികരണം അയയ്ക്കുന്നു.
@@ -3074,7 +3074,7 @@ Output:
-
+ ഇത് തിരഞ്ഞെടുക്കുന്നതിലൂടെ നിങ്ങളുടെ ഇൻസ്റ്റാളേഷനെക്കുറിച്ചും ഹാർഡ്വെയറിനെക്കുറിച്ചും വിവരങ്ങൾ അയയ്ക്കും. ഇൻസ്റ്റാളേഷൻ പൂർത്തിയായതിന് ശേഷം <b>ഒരു തവണ മാത്രമേ ഈ വിവരങ്ങൾ അയയ്ക്കൂ</b>.
@@ -3084,7 +3084,7 @@ Output:
-
+ ഇത് തിരഞ്ഞെടുക്കുന്നതിലൂടെ നിങ്ങളുടെ ഇൻസ്റ്റാളേഷൻ, ഹാർഡ്വെയർ, ആപ്ലിക്കേഷനുകൾ, ഉപയോഗ രീതികൾ എന്നിവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ <b>പതിവായി</b> %1 ലേക്ക് അയയ്ക്കും.
@@ -3092,7 +3092,7 @@ Output:
-
+ പ്രതികരണം
@@ -3100,12 +3100,12 @@ Output:
-
+ <small>ഒന്നിലധികം ആളുകൾ ഈ കമ്പ്യൂട്ടർ ഉപയോഗിക്കുമെങ്കിൽ, താങ്കൾക്ക് സജ്ജീകരണത്തിന് ശേഷം നിരവധി അക്കൗണ്ടുകൾ സൃഷ്ടിക്കാം.</small>
-
+ <small>ഒന്നിലധികം ആളുകൾ ഈ കമ്പ്യൂട്ടർ ഉപയോഗിക്കുമെങ്കിൽ, താങ്കൾക്ക് ഇൻസ്റ്റളേഷന് ശേഷം നിരവധി അക്കൗണ്ടുകൾ സൃഷ്ടിക്കാം.</small>
@@ -3152,12 +3152,12 @@ Output:
-
+ സൂചിക
-
+ മൂല്യം
@@ -3175,12 +3175,12 @@ Output:
-
+ വോള്യം ഗ്രൂപ്പിന്റെ പേര്:
-
+ വോള്യം ഗ്രൂപ്പ് തരം:
@@ -3195,17 +3195,17 @@ Output:
-
+ മൊത്തം വലുപ്പം:
-
+ ഉപയോഗിച്ച വലുപ്പം:
-
+ മൊത്തം സെക്ടറുകൾ:
@@ -3249,17 +3249,17 @@ Output:
- റിലീസ് കുറിപ്പുകളുടെ വെബ്സൈറ്റ് തുറക്കുക
+ പ്രകാശന കുറിപ്പുകളുടെ വെബ്സൈറ്റ് തുറക്കുക
- പ്രകാശന കുറിപ്പുകൾ
+ പ്രകാശന കുറിപ്പുകൾ (&R)
- &നേരത്തേ അറിയാവുന്ന പ്രശ്നങ്ങൾ
+ ഇതിനകം അറിയാവുന്ന പ്രശ്നങ്ങൾ (&K)
@@ -3269,27 +3269,27 @@ Output:
- &വിവരം (&A)
+ വിവരം (&A)
-
+ <h1>%1 ഇൻസ്റ്റാളറിലേക്ക് സ്വാഗതം</h1>
-
+ <h1>%1 -നായുള്ള കലാമാരേസ് ഇൻസ്റ്റാളറിലേക്ക് സ്വാഗതം.</h1>
-
+ <h1>%1 -നായുള്ള കലാമാരേസ് സജ്ജീകരണപ്രക്രിയയിലേയ്ക്ക് സ്വാഗതം.</h1>
-
+ <h1>%1 സജ്ജീകരണത്തിലേക്ക് സ്വാഗതം.</h1>
diff --git a/lang/calamares_pt_PT.ts b/lang/calamares_pt_PT.ts
index 5fd531a0b..9288d409a 100644
--- a/lang/calamares_pt_PT.ts
+++ b/lang/calamares_pt_PT.ts
@@ -1903,7 +1903,7 @@ O instalador será encerrado e todas as alterações serão perdidas.
-
+ Nome do produto
@@ -1913,7 +1913,7 @@ O instalador será encerrado e todas as alterações serão perdidas.
-
+ Descrição longa do produto
@@ -1931,7 +1931,7 @@ O instalador será encerrado e todas as alterações serão perdidas.
-
+ Pacotes
@@ -2459,12 +2459,12 @@ Saída de Dados:
-
+ Nenhum produto
-
+ Nenhuma descrição fornecida.
@@ -3103,12 +3103,12 @@ Saída de Dados:
-
+ <small>Se mais de uma pessoa usar este computador, você pode criar várias contas após a configuração.</small>
-
+ <small>Se mais de uma pessoa usar este computador, você pode criar várias contas após a instalação.</small>
@@ -3155,7 +3155,7 @@ Saída de Dados:
-
+ Chave
@@ -3227,7 +3227,7 @@ Saída de Dados:
-
+ Selecione o idioma da aplicação e do sistema
@@ -3252,7 +3252,7 @@ Saída de Dados:
-
+ Abrir o site com as notas de lançamento
diff --git a/lang/calamares_zh_TW.ts b/lang/calamares_zh_TW.ts
index f4c3df441..ba4c28d6b 100644
--- a/lang/calamares_zh_TW.ts
+++ b/lang/calamares_zh_TW.ts
@@ -4,17 +4,17 @@
- 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現代的系統則通常使用 <strong>EFI</strong>,但若開機環境是以相容模式執行,其也可能顯示為 BIOS。
+ 這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 BIOS。
- 這個系統以 <strong>EFI</strong> 開機環境啟動。<br><br>要設定從 EFI 環境開機,本安裝程式必須部署一個開機載入器應用程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>上。這是自動的,除非您選擇手動分割,在這種情況下,您必須自行選取或建立它。
+ 這個系統以 <strong>EFI</strong> 開機。<br><br>要從 EFI 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行選取或建立它。
- 這個系統以 <strong>BIOS</strong> 開機環境開始。<br><br>要從 BIOS 環境開機開機,本安裝程式必須安裝開機載入器,像是 <strong>GRUB</strong>,且通常不是安裝在分割區的開頭就是在靠進分割表開頭的 <strong>主開機記錄</strong>(推薦)。這是自動的,除非您選擇手動分割,在這種情況下,您必須自行設定它。
+ 這個系統以 <strong>BIOS</strong> 開機。<br><br>要從 BIOS 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong>。而且通常安裝在分割區的開首,又或最好安裝在靠近分割表開首的 <strong>主要開機記錄 (MBR)</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行設定它。
@@ -258,7 +258,7 @@
- 您想要將安裝紀錄檔貼到網路上嗎?
+ 想要將安裝紀錄檔貼到網路上嗎?
@@ -298,7 +298,7 @@
- 現在進行設定 (&S)
+ 馬上進行設定 (&S)
@@ -329,7 +329,7 @@
- 您真的想要取消目前的設定程序嗎?
+ 真的想要取消目前的設定程序嗎?
設定程式將會結束,所有變更都將會遺失。
@@ -471,7 +471,7 @@ The installer will quit and all changes will be lost.
- <strong>手動分割</strong><br/>您可以自行建立或重新調整分割區大小。
+ <strong>手動分割</strong><br/>可以自行建立或重新調整分割區大小。
@@ -537,7 +537,7 @@ The installer will quit and all changes will be lost.
- <strong>抹除磁碟</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置上所有的資料。
+ <strong>抹除磁碟</strong><br/>這將會<font color="red">刪除</font>目前選取的儲存裝置所有的資料。
@@ -932,12 +932,12 @@ The installer will quit and all changes will be lost.
- 選定的儲存裝置上的<strong>分割表</strong>類型。<br><br>變更分割表的唯一方法就是抹除再重新從頭建立分割表,這會破壞在該儲存裝置上所有的資料。<br>除非您特別選擇,否則本安裝程式將會保留目前的分割表。<br>若不確定,在現代的系統上,建議使用 GPT。
+ 選定的儲存裝置的<strong>分割表</strong>類型。<br><br>變更分割表的唯一方法,就是抹除再重新從頭建立分割表,這會破壞在該儲存裝置所有的資料。<br>除非特別選擇,否則本安裝程式會保留目前的分割表。<br>若不確定,現時的系統建議使用 GPT。
- 此裝置已有一個 <strong>%1</strong> 分割表了。
+ 此裝置已有 <strong>%1</strong> 分割表。
@@ -957,7 +957,7 @@ The installer will quit and all changes will be lost.
- <br><br>這個分割表類型只被建議在從 <strong>BIOS</strong> 開機環境啟動的較舊系統上使用。其他大多數情況建議使用 GPT。<br><strong>警告:</strong>MBR 分割表是一個被棄用的 MS-DOS 時代的標準。<br>只能有 4 個<em>主要</em>分割區被建立,其中一個可以是<em>延伸</em>分割區,其可以包含許多<em>邏輯</em>分割區。
+ <br><br>建議這個分割表類型只在以 <strong>BIOS</strong> 開機的舊系統使用。其他大多數情況建議使用 GPT。<br><strong>警告:</strong>MBR 分割表是已過時、源自 MS-DOS 時代的標準。<br>最多只能建立 4 個<em>主要</em>分割區;其中一個可以是<em>延伸</em>分割區,其可以包含許多<em>邏輯</em>分割區。
@@ -1016,7 +1016,7 @@ The installer will quit and all changes will be lost.
- 保持(&K)
+ 保留(&K)
@@ -1510,12 +1510,12 @@ The installer will quit and all changes will be lost.
- 系統語言將會設定為 %1。
+ 系統語言會設定為%1。
- 數字與日期語系將會被設定為 %1。
+ 數字與日期語系會設定為%1。
@@ -2443,7 +2443,7 @@ Output:
- (沒有掛載點)
+ (沒有掛載點)
@@ -2707,7 +2707,7 @@ Output:
- 本程式將會問您一些問題並在您的電腦上安裝及設定 %2 。
+ 本程式會問您一些問題,然後在您的電腦安裝及設定 %2。
@@ -2979,7 +2979,7 @@ Output:
- 這是您開始安裝後所會發生的事的概覽。
+ 這是開始安裝後所會發生的事的概覽。
@@ -3252,7 +3252,7 @@ Output:
-
+ 開啟發行手記網站
diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo
index 7bbf2f3f2..c455dea5d 100644
Binary files a/lang/python/hr/LC_MESSAGES/python.mo and b/lang/python/hr/LC_MESSAGES/python.mo differ
diff --git a/lang/python/hr/LC_MESSAGES/python.po b/lang/python/hr/LC_MESSAGES/python.po
index d8f7a7573..76624f5ac 100644
--- a/lang/python/hr/LC_MESSAGES/python.po
+++ b/lang/python/hr/LC_MESSAGES/python.po
@@ -308,7 +308,7 @@ msgstr[2] "Uklanjam %(num)d pakete."
#: src/modules/bootloader/main.py:51
msgid "Install bootloader."
-msgstr "Instalirajte bootloader."
+msgstr "Instaliram bootloader."
#: src/modules/removeuser/main.py:34
msgid "Remove live user from target system"
diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po
index f6decc759..c4ed3e929 100644
--- a/lang/python/it_IT/LC_MESSAGES/python.po
+++ b/lang/python/it_IT/LC_MESSAGES/python.po
@@ -5,7 +5,7 @@
#
# Translators:
# Saverio , 2018
-# Pietro Francesco Fontana, 2018
+# Pietro F. Fontana, 2018
# Pierfrancesco Passerini , 2019
#
#, fuzzy
diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo
index a004f563d..9341ca481 100644
Binary files a/lang/python/pt_BR/LC_MESSAGES/python.mo and b/lang/python/pt_BR/LC_MESSAGES/python.mo differ
diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po
index 493d4deed..a5da0a8fc 100644
--- a/lang/python/pt_BR/LC_MESSAGES/python.po
+++ b/lang/python/pt_BR/LC_MESSAGES/python.po
@@ -5,7 +5,7 @@
#
# Translators:
# André Marcelo Alvarenga , 2019
-# Guilherme , 2019
+# Guilherme Marçal Silva , 2019
#
#, fuzzy
msgid ""
@@ -14,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-15 21:54+0200\n"
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
-"Last-Translator: Guilherme , 2019\n"
+"Last-Translator: Guilherme Marçal Silva , 2019\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/src/libcalamares/locale/Label.h b/src/libcalamares/locale/Label.h
index 0fe61d909..95129d38c 100644
--- a/src/libcalamares/locale/Label.h
+++ b/src/libcalamares/locale/Label.h
@@ -67,7 +67,7 @@ public:
* en_US and en (American English) is defined as English. The Queen's
* English -- proper English -- is relegated to non-English status.
*/
- bool isEnglish() const { return m_localeId == QLatin1Literal( "en_US" ) || m_localeId == QLatin1Literal( "en" ); }
+ bool isEnglish() const { return m_localeId == QLatin1String( "en_US" ) || m_localeId == QLatin1String( "en" ); }
/** @brief Get the human-readable name for this locale. */
QString label() const { return m_label; }
diff --git a/src/libcalamares/modulesystem/InstanceKey.h b/src/libcalamares/modulesystem/InstanceKey.h
index 35ad27c40..ad0fae0e7 100644
--- a/src/libcalamares/modulesystem/InstanceKey.h
+++ b/src/libcalamares/modulesystem/InstanceKey.h
@@ -90,7 +90,11 @@ public:
QString toString() const
{
- return first + '@' + second;
+ if ( isValid() )
+ {
+ return first + '@' + second;
+ }
+ return QString();
}
private:
diff --git a/src/libcalamares/modulesystem/Tests.cpp b/src/libcalamares/modulesystem/Tests.cpp
index 4ef5840ea..e7301a0be 100644
--- a/src/libcalamares/modulesystem/Tests.cpp
+++ b/src/libcalamares/modulesystem/Tests.cpp
@@ -52,7 +52,14 @@ assert_is_invalid( const InstanceKey& k )
QVERIFY( !k.isCustom() );
QVERIFY( k.module().isEmpty() );
QVERIFY( k.id().isEmpty() );
- QVERIFY( k.toString().isEmpty() );
+ if ( k.toString().isEmpty() )
+ {
+ QVERIFY( k.toString().isEmpty() );
+ }
+ else
+ {
+ QCOMPARE( k.toString(), QString() );
+ }
}
void
diff --git a/src/libcalamares/utils/CommandList.cpp b/src/libcalamares/utils/CommandList.cpp
index 1a3075a43..8a2f3835b 100644
--- a/src/libcalamares/utils/CommandList.cpp
+++ b/src/libcalamares/utils/CommandList.cpp
@@ -131,8 +131,8 @@ findInCommands( const CommandList& l, const QString& needle )
Calamares::JobResult
CommandList::run()
{
- QLatin1Literal rootMagic( "@@ROOT@@" );
- QLatin1Literal userMagic( "@@USER@@" );
+ QLatin1String rootMagic( "@@ROOT@@" );
+ QLatin1String userMagic( "@@USER@@" );
System::RunLocation location = m_doChroot ? System::RunLocation::RunInTarget : System::RunLocation::RunInHost;
diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp
index 8fb832369..6da81e7af 100644
--- a/src/libcalamaresui/ViewManager.cpp
+++ b/src/libcalamaresui/ViewManager.cpp
@@ -275,12 +275,12 @@ ViewManager::onInitFailed( const QStringList& modules )
{
description.append( tr( " The following modules could not be loaded:" ) );
QStringList details;
- details << QLatin1Literal( "
" );
+ details << QLatin1String( "
" );
for ( const auto& m : modules )
{
- details << QLatin1Literal( "
" ) << m << QLatin1Literal( "
" );
+ details << QLatin1String( "
" ) << m << QLatin1String( "
" );
}
- details << QLatin1Literal( "
" );
+ details << QLatin1String( "
" );
detailString = details.join( QString() );
}
diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp
index 78164ae18..53cc1fabb 100644
--- a/src/libcalamaresui/modulesystem/ModuleManager.cpp
+++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp
@@ -91,7 +91,7 @@ ModuleManager::doInit()
bool success = currentDir.cd( subdir );
if ( success )
{
- QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc" ) ) );
+ QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1String( "module.desc" ) ) );
if ( !descriptorFileInfo.exists() )
{
cDebug() << "ModuleManager expected descriptor is missing:"
diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp
index 0b775e067..08e4c5c08 100644
--- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp
+++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp
@@ -137,7 +137,7 @@ PythonQtViewModule::loadSelf()
return;
}
- static const QLatin1Literal calamares_module_annotation(
+ static const QLatin1String calamares_module_annotation(
"_calamares_module_typename = ''\n"
"def calamares_module(viewmodule_type):\n"
" global _calamares_module_typename\n"
diff --git a/src/modules/displaymanager/displaymanager.conf b/src/modules/displaymanager/displaymanager.conf
index 8f8e9c704..c3e0e1160 100644
--- a/src/modules/displaymanager/displaymanager.conf
+++ b/src/modules/displaymanager/displaymanager.conf
@@ -13,7 +13,25 @@ displaymanagers:
- lxdm
- kdm
-#Enable the following settings to force a desktop environment in your displaymanager configuration file:
+# Enable the following settings to force a desktop environment
+# in your displaymanager configuration file. This will attempt
+# to configure the given DE (without checking if it is installed).
+# The DM configuration for each potential DM may **or may not**
+# support configuring a default DE, so the keys are mandatory
+# but their interpretation is up to the DM configuration.
+#
+# Subkeys of *defaultDesktopEnvironment* are (all mandatory):
+# - *executable* a full path to an executable
+# - *desktopFile* a .desktop filename
+#
+# If this is **not** set, then Calamares will look for installed
+# DE's and pick the first one it finds that is actually installed.
+#
+# If this **is** set, and the *executable* key doesn't point to
+# an installed file, then the .desktop file's TryExec key is
+# used instead.
+#
+
#defaultDesktopEnvironment:
# executable: "startkde"
# desktopFile: "plasma"
diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py
index fdb802fef..ca42e6204 100644
--- a/src/modules/displaymanager/main.py
+++ b/src/modules/displaymanager/main.py
@@ -51,31 +51,59 @@ class DesktopEnvironment:
self.executable = exec
self.desktop_file = desktop
- def find_executable(self, root_mount_point, command):
- if command.startswith("/"):
+ def _search_executable(self, root_mount_point, pathname):
+ """
+ Search for @p pathname within @p root_mount_point .
+ If the pathname is absolute, just check there inside
+ the target, otherwise earch in a sort-of-sensible $PATH.
+
+ Returns the full (including @p root_mount_point) path
+ to that executable, or None.
+ """
+ if pathname.startswith("/"):
path = [""]
else:
path = ["/bin/", "/usr/bin/", "/sbin/", "/usr/local/bin/"]
for p in path:
- absolute_path = "{!s}{!s}{!s}".format(root_mount_point, p, command)
+ absolute_path = "{!s}{!s}{!s}".format(root_mount_point, p, pathname)
if os.path.exists(absolute_path):
return absolute_path
return None
- def find_tryexec(self, root_mount_point, absolute_desktop_file):
+ def _search_tryexec(self, root_mount_point, absolute_desktop_file):
+ """
+ Check @p absolute_desktop_file for a TryExec line and, if that is
+ found, search for the command (executable pathname) within
+ @p root_mount_point. The .desktop file must live within the
+ target root.
+
+ Returns the full (including @p root_mount_point) for the executable
+ from TryExec, or None.
+ """
assert absolute_desktop_file.startswith(root_mount_point)
with open(absolute_desktop_file, "r") as f:
for tryexec_line in [x for x in f.readlines() if x.startswith("TryExec")]:
try:
key, value = tryexec_line.split("=")
if key.strip() == "TryExec":
- return self.find_executable(root_mount_point, value.strip())
+ return self._search_executable(root_mount_point, value.strip())
except:
pass
return None
+ def find_executable(self, root_mount_point):
+ """
+ Returns the full path of the configured executable within @p root_mount_point,
+ or None if it isn't found. May search in a semi-sensible $PATH.
+ """
+ return self._search_executable(root_mount_point, self.executable)
+
def find_desktop_file(self, root_mount_point):
+ """
+ Returns the full path of the .desktop file within @p root_mount_point,
+ or None if it isn't found. Searches both X11 and Wayland sessions.
+ """
x11_sessions = "{!s}/usr/share/xsessions/{!s}.desktop".format(root_mount_point, self.desktop_file)
wayland_sessions = "{!s}/usr/share/wayland-sessions/{!s}.desktop".format(root_mount_point, self.desktop_file)
for candidate in (x11_sessions, wayland_sessions):
@@ -83,7 +111,7 @@ class DesktopEnvironment:
return candidate
return None
- def find_desktop_environment(self, root_mount_point):
+ def is_installed(self, root_mount_point):
"""
Check if this environment is installed in the
target system at @p root_mount_point.
@@ -92,10 +120,59 @@ class DesktopEnvironment:
if desktop_file is None:
return False
- return (self.find_executable(root_mount_point, self.executable) is not None or
- self.find_tryexec(root_mount_point, desktop_file) is not None)
+ return (self.find_executable(root_mount_point) is not None or
+ self._search_tryexec(root_mount_point, desktop_file) is not None)
+
+ def update_from_desktop_file(self, root_mount_point):
+ """
+ Find thie DE in the target system at @p root_mount_point.
+ This can update the *executable* configuration value if
+ the configured executable isn't found but the TryExec line
+ from the .desktop file is.
+
+ The .desktop file is mandatory for a DE.
+
+ Returns True if the DE is installed.
+ """
+ desktop_file = self.find_desktop_file(root_mount_point)
+ if desktop_file is None:
+ return False
+
+ executable_file = self.find_executable(root_mount_point)
+ if executable_file is not None:
+ # .desktop found and executable as well.
+ return True
+
+ executable_file = self._search_tryexec(root_mount_point, desktop_file)
+ if executable_file is not None:
+ # Found from the .desktop file, so update own executable config
+ if root_mount_point and executable_file.startswith(root_mount_point):
+ executable_file = executable_file[len(root_mount_point):]
+ if not executable_file:
+ # Somehow chopped down to nothing
+ return False
+
+ if executable_file[0] != "/":
+ executable_file = "/" + executable_file
+ self.executable = executable_file
+ return True
+ # This is to double-check
+ return self.is_installed(root_mount_point)
+# This is the list of desktop environments that Calamares looks
+# for; if no default environment is **explicitly** configured
+# in the `displaymanager.conf` then the first one from this list
+# that is found, is used.
+#
+# Each DE has a sample executable to look for, and a .desktop filename.
+# If the executable exists, the DE is assumed to be installed
+# and to use the given .desktop filename.
+#
+# If the .desktop file exists and contains a TryExec line and that
+# TryExec executable exists (searched in /bin, /usr/bin, /sbin and
+# /usr/local/bin) then the DE is assumed to be installed
+# and to use that .desktop filename.
desktop_environments = [
DesktopEnvironment('/usr/bin/startplasma-x11', 'plasma'), # KDE Plasma 5.17+
DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5
@@ -131,7 +208,7 @@ def find_desktop_environment(root_mount_point):
"""
libcalamares.utils.debug("Using rootMountPoint {!r}".format(root_mount_point))
for desktop_environment in desktop_environments:
- if desktop_environment.find_desktop_environment(root_mount_point):
+ if desktop_environment.is_installed(root_mount_point):
libcalamares.utils.debug(".. selected DE {!s}".format(desktop_environment.desktop_file))
return desktop_environment
return None
@@ -847,6 +924,11 @@ def run():
default_desktop_environment = DesktopEnvironment(
entry["executable"], entry["desktopFile"]
)
+ # Adjust if executable is bad, but desktopFile isn't.
+ if not default_desktop_environment.update_from_desktop_file(root_mount_point):
+ libcalamares.utils.warning(
+ "The configured default desktop environment, {!s}, "
+ "can not be found.".format(default_desktop_environment.desktop_file))
else:
default_desktop_environment = find_desktop_environment(
root_mount_point
diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp
index 9b15ef87c..97b2c9d55 100644
--- a/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp
+++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.cpp
@@ -30,7 +30,7 @@
#include "utils/Logger.h"
// static
-const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" );
+const QLatin1String DracutLuksCfgJob::CONFIG_FILE( "/etc/dracut.conf.d/calamares-luks.conf" );
// static
const char *DracutLuksCfgJob::CONFIG_FILE_HEADER =
@@ -50,7 +50,7 @@ const char *DracutLuksCfgJob::CONFIG_FILE_CRYPTTAB_LINE =
"install_items+=\" /etc/crypttab \"\n";
// static
-const QLatin1Literal DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" );
+const QLatin1String DracutLuksCfgJob::CONFIG_FILE_SWAPLINE( "# enable automatic resume from swap\nadd_device+=\" /dev/disk/by-uuid/%1 \"\n" );
// static
QString
diff --git a/src/modules/dracutlukscfg/DracutLuksCfgJob.h b/src/modules/dracutlukscfg/DracutLuksCfgJob.h
index 15ff24069..5811c34a1 100644
--- a/src/modules/dracutlukscfg/DracutLuksCfgJob.h
+++ b/src/modules/dracutlukscfg/DracutLuksCfgJob.h
@@ -42,11 +42,11 @@ public:
Calamares::JobResult exec() override;
private:
- static const QLatin1Literal CONFIG_FILE;
+ static const QLatin1String CONFIG_FILE;
static const char *CONFIG_FILE_HEADER;
static const char *CONFIG_FILE_CRYPTTAB_KEYFILE_LINE;
static const char *CONFIG_FILE_CRYPTTAB_LINE;
- static const QLatin1Literal CONFIG_FILE_SWAPLINE;
+ static const QLatin1String CONFIG_FILE_SWAPLINE;
static QString rootMountPoint();
static QVariantList partitions();
diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo
index dad5673f1..6e1162388 100644
Binary files a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo differ
diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po
index 53a05e9ec..4377e6c3e 100644
--- a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po
+++ b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.po
@@ -5,16 +5,16 @@
#
# Translators:
# Rodrigo de Almeida Sottomaior Macedo , 2017
-# Guilherme , 2018
+# Guilherme Marçal Silva , 2018
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-02-22 07:09-0500\n"
+"POT-Creation-Date: 2019-09-15 21:54+0200\n"
"PO-Revision-Date: 2016-12-16 12:18+0000\n"
-"Last-Translator: Guilherme , 2018\n"
+"Last-Translator: Guilherme Marçal Silva , 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp
index d3829aad3..7720a840c 100644
--- a/src/modules/locale/LocalePage.cpp
+++ b/src/modules/locale/LocalePage.cpp
@@ -241,7 +241,7 @@ LocalePage::init( const QString& initialRegion, const QString& initialZone, cons
<< "\n\t "
<< "* a well-formed" << supported.fileName() << "\n\tOR"
<< "* a well-formed"
- << ( localeGenPath.isEmpty() ? QLatin1Literal( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR"
+ << ( localeGenPath.isEmpty() ? QLatin1String( "/etc/locale.gen" ) : localeGenPath ) << "\n\tOR"
<< "* a complete pre-compiled locale-gen database which allows complete locale -a output.";
return; // something went wrong and there's nothing we can do about it.
}
diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp
index a228f000c..1553af9bc 100644
--- a/src/modules/locale/timezonewidget/timezonewidget.cpp
+++ b/src/modules/locale/timezonewidget/timezonewidget.cpp
@@ -34,7 +34,7 @@ constexpr static double MATH_PI = 3.14159265;
#ifdef DEBUG_TIMEZONES
// Adds a label to the timezone with this name
-constexpr static QLatin1Literal ZONE_NAME( "zone" );
+constexpr static QLatin1String ZONE_NAME( "zone" );
#endif
TimeZoneWidget::TimeZoneWidget( QWidget* parent ) :
diff --git a/src/modules/netinstall/PackageTreeItem.cpp b/src/modules/netinstall/PackageTreeItem.cpp
index 80e553d2e..b3dc6fae7 100644
--- a/src/modules/netinstall/PackageTreeItem.cpp
+++ b/src/modules/netinstall/PackageTreeItem.cpp
@@ -45,7 +45,7 @@ PackageTreeItem::PackageTreeItem::PackageTreeItem() :
PackageTreeItem( QString(), nullptr )
{
m_data.selected = Qt::Checked;
- m_data.name = QLatin1Literal( "" );
+ m_data.name = QLatin1String( "" );
}
PackageTreeItem::~PackageTreeItem()
diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp
index 562474865..94630b472 100644
--- a/src/modules/partition/core/PartUtils.cpp
+++ b/src/modules/partition/core/PartUtils.cpp
@@ -450,7 +450,7 @@ isEfiBootable( const Partition* candidate )
QString
findFS( QString fsName, FileSystem::Type* fsType )
{
- QStringList fsLanguage { QLatin1Literal( "C" ) }; // Required language list to turn off localization
+ QStringList fsLanguage { QLatin1String( "C" ) }; // Required language list to turn off localization
if ( fsName.isEmpty() )
fsName = QStringLiteral( "ext4" );
diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp
index 8a190b68a..95df5561c 100644
--- a/src/modules/partition/gui/PartitionViewStep.cpp
+++ b/src/modules/partition/gui/PartitionViewStep.cpp
@@ -646,7 +646,7 @@ PartitionViewStep::checkRequirements()
Calamares::RequirementsList l;
l.append(
{
- QLatin1Literal( "partitions" ),
+ QLatin1String( "partitions" ),
[]{ return tr( "has at least one disk device available." ); },
[]{ return tr( "There are no partitons to install on." ); },
m_core->deviceModel()->rowCount() > 0, // satisfied
diff --git a/src/modules/preservefiles/PreserveFiles.cpp b/src/modules/preservefiles/PreserveFiles.cpp
index 96d26274c..175f8e4f8 100644
--- a/src/modules/preservefiles/PreserveFiles.cpp
+++ b/src/modules/preservefiles/PreserveFiles.cpp
@@ -52,7 +52,7 @@ QString targetPrefix()
}
}
- return QLatin1Literal( "/" );
+ return QLatin1String( "/" );
}
QString atReplacements( QString s )
diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py
index 90c258cd7..fd3f97353 100644
--- a/src/modules/unpackfs/main.py
+++ b/src/modules/unpackfs/main.py
@@ -58,6 +58,9 @@ class UnpackEntry:
self.copied = 0
self.total = 0
+ def is_file(self):
+ return self.sourcefs == "file"
+
ON_POSIX = 'posix' in sys.builtin_module_names
@@ -100,7 +103,7 @@ def file_copy(source, dest, progress_cb):
# `source` *must* end with '/' otherwise a directory named after the source
# will be created in `dest`: ie if `source` is "/foo/bar" and `dest` is
# "/dest", then files will be copied in "/dest/bar".
- if not source.endswith("/"):
+ if not source.endswith("/") and not os.path.isfile(source):
source += "/"
num_files_total_local = 0
@@ -225,11 +228,16 @@ class UnpackOperation:
["unsquashfs", "-l", entry.source]
)
- if entry.sourcefs == "ext4":
+ elif entry.sourcefs == "ext4":
fslist = subprocess.check_output(
["find", imgmountdir, "-type", "f"]
)
+ elif entry.is_file():
+ # Hasn't been mounted, copy directly; find handles both
+ # files and directories.
+ fslist = subprocess.check_output(["find", entry.source, "-type", "f"])
+
entry.total = len(fslist.splitlines())
self.report_progress()
@@ -247,9 +255,15 @@ class UnpackOperation:
"""
Mount given image as loop device.
+ A *file* entry (e.g. one with *sourcefs* set to *file*)
+ is not mounted and just ignored.
+
:param entry:
:param imgmountdir:
"""
+ if entry.is_file():
+ return
+
if os.path.isdir(entry.source):
subprocess.check_call(["mount",
"--bind", entry.source,
@@ -287,12 +301,18 @@ class UnpackOperation:
self.report_progress()
try:
- return file_copy(imgmountdir, entry.destination, progress_cb)
+ if entry.is_file():
+ source = entry.source
+ else:
+ source = imgmountdir
+
+ return file_copy(source, entry.destination, progress_cb)
finally:
- subprocess.check_call(["umount", "-l", imgmountdir])
+ if not entry.is_file():
+ subprocess.check_call(["umount", "-l", imgmountdir])
-def get_supported_filesystems():
+def get_supported_filesystems_kernel():
"""
Reads /proc/filesystems (the list of supported filesystems
for the current kernel) and returns a list of (names of)
@@ -310,6 +330,14 @@ def get_supported_filesystems():
return []
+def get_supported_filesystems():
+ """
+ Returns a list of all the supported filesystems
+ (valid values for the *sourcefs* key in an item.
+ """
+ return ["file"] + get_supported_filesystems_kernel()
+
+
def run():
"""
Unsquash filesystem.
@@ -330,8 +358,7 @@ def run():
supported_filesystems = get_supported_filesystems()
- unpack = list()
-
+ # Bail out before we start when there are obvious problems
for entry in job.configuration["unpack"]:
source = os.path.abspath(entry["source"])
sourcefs = entry["sourcefs"]
@@ -340,14 +367,18 @@ def run():
utils.warning("The filesystem for \"{}\" ({}) is not supported".format(source, sourcefs))
return (_("Bad unsquash configuration"),
_("The filesystem for \"{}\" ({}) is not supported").format(source, sourcefs))
-
- destination = os.path.abspath(root_mount_point + entry["destination"])
-
if not os.path.exists(source):
utils.warning("The source filesystem \"{}\" does not exist".format(source))
return (_("Bad unsquash configuration"),
_("The source filesystem \"{}\" does not exist").format(source))
+ unpack = list()
+
+ for entry in job.configuration["unpack"]:
+ source = os.path.abspath(entry["source"])
+ sourcefs = entry["sourcefs"]
+ destination = os.path.abspath(root_mount_point + entry["destination"])
+
if not os.path.isdir(destination):
utils.warning(("The destination \"{}\" in the target system is not a directory").format(destination))
return (_("Bad unsquash configuration"),
diff --git a/src/modules/unpackfs/unpackfs.conf b/src/modules/unpackfs/unpackfs.conf
index b2b107268..d994e351a 100644
--- a/src/modules/unpackfs/unpackfs.conf
+++ b/src/modules/unpackfs/unpackfs.conf
@@ -9,32 +9,59 @@
# target dir relative to rootMountPoint.
---
-unpack:
# Each list item is unpacked, in order, to the target system.
+#
# Each list item has the following attributes:
# source: path relative to the live / intstalling system to the image
-# sourcefs: ext4 or squashfs (may be others if mount supports it)
+# sourcefs: the type of the source files; valid entries are
+# - *ext4* (copies the filesystem contents)
+# - *squashfs* (unsquashes)
+# - *file* (copies a file or directory)
+# - (may be others if mount supports it)
# destination: path relative to rootMountPoint (so in the target
-# system) where this filesystem is unpacked.
-
+# system) where this filesystem is unpacked. It may be an
+# empty string, which effectively is / (the root) of the target
+# system.
+#
+# EXAMPLES
+#
# Usually you list a filesystem image to unpack; you can use
# squashfs or an ext4 image.
#
# - source: "/path/to/filesystem.sqfs"
# sourcefs: "squashfs"
# destination: ""
-
-# You can list more than one filesystem.
+#
+# Multiple entries are unpacked in-order
#
# - source: "/path/to/another/filesystem.img"
# sourcefs: "ext4"
# destination: ""
+# - source: "/path/to/another/filesystem2.img"
+# sourcefs: "ext4"
+# destination: "/usr/lib/extra"
#
-
# You can list filesystem source paths relative to the Calamares run
# directory, if you use -d (this is only useful for testing, though).
- - source: "_root-image_"
- sourcefs: "squashfs"
- destination: ""
- - source: "_desktop-image_"
- sourcefs: "squashfs"
+#
+# - source: ./example.sqfs
+# sourcefs: squashfs
+# destination: ""
+#
+# You can list individual files (copied one-by-one), or directories
+# (the files inside this directory are copied directly to the destination,
+# so no "dummycpp/" subdirectory is created in this example).
+# Do note that the target directory must exist already (e.g. from
+# extracting some other filesystem).
+#
+# - source: ../CHANGES
+# sourcefs: file
+# destination: "/tmp/derp"
+# - source: ../src/modules/dummycpp
+# sourcefs: file
+# destination: "/tmp/derp"
+
+unpack:
+ - source: ../CHANGES
+ sourcefs: file
+ destination: "/tmp"
diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp
index 4582a9e85..0d1bb593e 100644
--- a/src/modules/users/UsersViewStep.cpp
+++ b/src/modules/users/UsersViewStep.cpp
@@ -173,7 +173,7 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap )
}
}
- QString shell( QLatin1Literal( "/bin/bash" ) ); // as if it's not set at all
+ QString shell( QLatin1String( "/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