diff --git a/CHANGES b/CHANGES index db5b75f82..d91de15b2 100644 --- a/CHANGES +++ b/CHANGES @@ -3,16 +3,14 @@ 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.20 (unreleased) # +# 3.2.19.1 (unreleased) # -This release contains contributions from (alphabetically by first name): - - No external contributors yet - -## Core ## - - No core changes yet +This is a hotfix release for bugs in the *users* module. +Reported by Philip Mueller and Walter Lapchynski. ## Modules ## - - No module changes yet + - The *users* module no longer wrote `/etc/hostname` at all. + - The *users* module erroneously shows the root password input fields. # 3.2.19 (2020-02-21) # diff --git a/lang/calamares_ast.ts b/lang/calamares_ast.ts index 63c47d8a8..b6e19297c 100644 --- a/lang/calamares_ast.ts +++ b/lang/calamares_ast.ts @@ -212,7 +212,7 @@ Loading ... - + Cargando... @@ -222,7 +222,7 @@ Loading failed. - + Falló la carga. @@ -532,7 +532,7 @@ L'instalador va colar y van perdese tolos cambeos. %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. - %1 va redimensionase a %2MB y va crease una partición nueva de %3MB pa %4. + %1 va redimensionase a %2MB y va crease una partición de %3MB pa %4. @@ -785,7 +785,7 @@ L'instalador va colar y van perdese tolos cambeos. Creating new %1 partition on %2. - Creando una partición %1 nueva en %2. + Creando una partición %1 en %2. @@ -803,7 +803,7 @@ L'instalador va colar y van perdese tolos cambeos. Creating a new partition table will delete all existing data on the disk. - Crear una tabla de particiones nueva va desaniciar tolos datos esistentes nel discu. + Crear una tabla de particiones va desaniciar tolos datos esistentes nel discu. @@ -831,12 +831,12 @@ L'instalador va colar y van perdese tolos cambeos. Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). - Va crease una tabla de particiones nueva <strong>%1</strong> en <strong>%2</strong> (%3). + Va crease una tabla de particiones <strong>%1</strong> en <strong>%2</strong> (%3). Creating new %1 partition table on %2. - Creando una tabla de particiones nueva %1 en %2. + Creando una tabla de particiones %1 en %2. @@ -895,17 +895,17 @@ L'instalador va colar y van perdese tolos cambeos. Create new volume group named %1. - Creación d'un grupu nuevu de volúmenes col nome %1. + Creación d'un grupu de volúmenes col nome %1. Create new volume group named <strong>%1</strong>. - Va crease un grupu nuevu de volúmenes col nome <strong>%1</strong>. + Va crease un grupu de volúmenes col nome <strong>%1</strong>. Creating new volume group named %1. - Creando un grupu nuevu de volúmenes col nome %1. + Creando un grupu de volúmenes col nome %1. @@ -975,7 +975,7 @@ L'instalador va colar y van perdese tolos cambeos. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - Esti instalador <strong>nun pue deteutar una tabla de particiones</strong> nel preséu d'almacenamientu esbilláu.<br><br>El preséu nun tien una tabla de particiones, la tabla de particiones ta toyida o ye d'una triba desconocida.<br>Esti instalador pue crear una tabla de particiones nueva por ti, automáticamente o pente la páxina de particionáu manual. + Esti instalador <strong>nun pue deteutar una tabla de particiones</strong> nel preséu d'almacenamientu esbilláu.<br><br>El preséu nun tien una tabla de particiones porque ta toyida o ye d'una triba desconocida.<br>Esti instalador pue crear una tabla de particiones nueva por ti, automáticamente o pente la páxina de particionáu manual. @@ -1470,22 +1470,22 @@ L'instalador va colar y van perdese tolos cambeos. This setup procedure will install proprietary software that is subject to licensing terms. - + Esti procedimientu va instalar software privativu que ta suxetu a términos de llicencia. If you do not agree with the terms, the setup procedure cannot continue. - + Si nun aceutes los términos, el procedimientu de configuración nun pue siguir. This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Esti procedimientu de configuración pue instalar software privativu que ta suxetu a términos de llicencia pa fornir carauterístiques adicionales y ameyorar la esperiencia d'usuariu. If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Si nun aceutes los términos, el software privativu nun va instalase y van usase les alternatives de códigu abiertu. @@ -1501,7 +1501,7 @@ L'instalador va colar y van perdese tolos cambeos. URL: %1 - + URL: %1 @@ -1538,7 +1538,7 @@ L'instalador va colar y van perdese tolos cambeos. File: %1 - + Ficheru: %1 @@ -1691,12 +1691,12 @@ L'instalador va colar y van perdese tolos cambeos. Office software - + Software ofimáticu Office package - + Paquete ofimáticu @@ -1711,17 +1711,17 @@ L'instalador va colar y van perdese tolos cambeos. Web browser - + Restolador web Kernel - + Kernel Services - + Servicios @@ -1731,12 +1731,12 @@ L'instalador va colar y van perdese tolos cambeos. Desktop - + Escritoriu Applications - + Aplicaciones @@ -1744,7 +1744,7 @@ L'instalador va colar y van perdese tolos cambeos. Notes - + Notes @@ -2023,7 +2023,7 @@ L'instalador va colar y van perdese tolos cambeos. Password is empty - + La contraseña ta balera @@ -2064,7 +2064,7 @@ L'instalador va colar y van perdese tolos cambeos. Packages - + Paquetes @@ -2142,7 +2142,7 @@ L'instalador va colar y van perdese tolos cambeos. Password - + Contraseña @@ -2301,22 +2301,22 @@ L'instalador va colar y van perdese tolos cambeos. New Volume Group - Grupu de volúmenes nuevu + Grupu nuevu Resize Volume Group - Redimensionar el grupu de volúmenes + Redimensionar el grupu Deactivate Volume Group - Desactivar el grupu de volúmenes + Desactivar el grupu Remove Volume Group - Desaniciar el grupu de volúmenes + Desaniciar el grupu @@ -2439,12 +2439,12 @@ L'instalador va colar y van perdese tolos cambeos. has at least one disk device available. - tien polo menos un preséu con espaciu disponible en discu + tien polo menos un preséu disponible d'almacenamientu There are no partitions to install on. - + Nun hai particiones nes qu'instalar. @@ -2649,7 +2649,7 @@ Salida: Path <pre>%1</pre> must be an absolute path. - + El camín <pre>%1</pre> ha ser absolutu. @@ -2850,7 +2850,7 @@ Salida: Resize Volume Group - Redimensionar el grupu de volúmenes + Redimensionar el grupu @@ -3542,7 +3542,7 @@ Salida: <h3>%1 <quote>%2</quote></h3> - + <h3>%1 <quote>%2</quote></h3> @@ -3557,12 +3557,12 @@ Salida: Known issues - + Problemes conocíos Release notes - + Notes del llanzamientu diff --git a/lang/calamares_it_IT.ts b/lang/calamares_it_IT.ts index 991746f7b..f73cfe173 100644 --- a/lang/calamares_it_IT.ts +++ b/lang/calamares_it_IT.ts @@ -106,7 +106,7 @@ Widget Tree - + Albero dei Widget @@ -137,7 +137,7 @@ Programmed job failure was explicitly requested. - + Il fallimento dell'operazione programmata è stato richiesto esplicitamente. @@ -153,7 +153,7 @@ Example job (%1) - + Operazione d'esempio (%1) @@ -212,12 +212,12 @@ Loading ... - + Caricamento ... QML Step <i>%1</i>. - + QML Progresso <i>%1</i>. @@ -238,9 +238,9 @@ (%n second(s)) - - - + + (%n secondo) + (%n secondi) @@ -292,12 +292,12 @@ Install Log Paste URL - + Incolla URL Log di Installazione The upload was unsuccessful. No web-paste was done. - + Il caricamento è fallito. Non è stato eseguito web-paste. @@ -454,7 +454,8 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Install log posted to: %1 - + Log di installazione caricato: +%1 @@ -779,7 +780,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. - + Creare nuova partizione di <strong>%2MiB</strong> su <strong>%4</strong> (%3) con file system <strong>%1</strong>. @@ -1162,7 +1163,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <Restart checkbox tooltip> - + <Restart checkbox tooltip> @@ -1172,7 +1173,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. - + <h1>Tutto eseguito.</h1><br/>%1 è stato configurato sul tuo computer.<br/>Adesso puoi iniziare a utilizzare il tuo nuovo sistema. @@ -1187,7 +1188,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Quando questa casella è selezionata, il tuo sistema si riavvierà immediatamente quando clicchi su <span style="font-style:italic;">Fatto</span> o chiudi il programma di installazione.</p></body></html> @@ -1296,7 +1297,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse is running the installer as an administrator (root) - + sta eseguendo il programma di installazione come amministratore (root) @@ -1311,7 +1312,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse has a screen large enough to show the whole installer - + ha uno schermo abbastanza grande da mostrare l'intero programma di installazione @@ -1329,7 +1330,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Collecting information about your machine. - + Raccogliendo informazioni sulla tua macchina. @@ -1340,7 +1341,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse OEM Batch Identifier - + Codice Batch OEM @@ -1454,7 +1455,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse <h1>License Agreement</h1> - + <h1>Accordo di Licenza</h1> @@ -1464,27 +1465,27 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Please review the End User License Agreements (EULAs). - + Si prega di leggere l'Accordo di Licenza per l'Utente Finale (EULAs). This setup procedure will install proprietary software that is subject to licensing terms. - + Questa procedura di configurazione installerà software proprietario che è soggetto ai termini di licenza. If you do not agree with the terms, the setup procedure cannot continue. - + Se non accetti i termini, la procedura di configurazione non può continuare. This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - + Questa procedura di configurazione installerà software proprietario sottoposto a termini di licenza, per fornire caratteristiche aggiuntive e migliorare l'esperienza utente. If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - + Se non se ne accettano i termini, il software proprietario non verrà installato e al suo posto saranno utilizzate alternative open source. @@ -1500,7 +1501,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse URL: %1 - + URL: %1 @@ -1537,17 +1538,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse File: %1 - + File: %1 Show the license text - + Mostra il testo della licenza Open license agreement in browser. - + Apri l'accordo di licenza nel browser. @@ -1602,7 +1603,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Configuring LUKS key file. - + Configurazione in corso del file chiave LUKS. @@ -1615,22 +1616,22 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Encrypted rootfs setup error - + Errore nella configurazione del rootfs crittato Root partition %1 is LUKS but no passphrase has been set. - + La partizione root %1 è LUKS ma non sono state configurate passphrase. Could not create LUKS key file for root partition %1. - + Impossibile creare il file chiave LUKS per la partizione root %1. Could not configure LUKS key file on partition %1. - + Impossibile configurare il file chiave LUKS per la partizione %1. @@ -1643,12 +1644,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Configuration Error - + Errore di Configurazione No root mount point is set for MachineId. - + Non è impostato alcun punto di montaggio root per MachineId @@ -1676,7 +1677,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Network Installation. (Disabled: Incorrect configuration) - + Installazione di rete. (Disabilitato: Configurazione scorretta) @@ -1690,52 +1691,52 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Office software - + Software per ufficio Office package - + Pacchetto per ufficio Browser software - + Software navigazione web Browser package - + Pacchetto navigazione web Web browser - + Browser web Kernel - + Kernel Services - + Servizi Login - + Accesso Desktop - + Ambiente desktop Applications - + Applicazioni @@ -1743,7 +1744,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Notes - + Note @@ -1751,17 +1752,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Ba&tch: - + Lo&amp;tto <html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html> - + <html><head/><body><p>Inserire un identificatore per il lotto. Questo verrà salvato nel sistema di destinazione.</p></body></html> <html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html> - + <html><head/><body><h1>Configurazione OEM</h1><p>Calamares userà le impostazioni OEM nella configurazione del sistema di destinazione.</p></body></html> @@ -1769,12 +1770,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse OEM Configuration - + Configurazione OEM Set the OEM Batch Identifier to <code>%1</code>. - + Impostare l'Identificatore del Lotto OEM a <code>%1</code>. @@ -2022,7 +2023,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Password is empty - + Password vuota @@ -2035,7 +2036,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Product Name - + Nome Prodotto @@ -2045,17 +2046,17 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Long Product Description - + Descrizione Estesa del Prodotto Package Selection - + Selezione del Pacchetto Please pick a product from the list. The selected product will be installed. - + Si prega di scegliere un prodotto dalla lista. Il prodotto selezionato verrà installato. @@ -2063,7 +2064,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Packages - + Pacchetti @@ -2120,12 +2121,12 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Your Full Name - + Nome Completo login - + accesso @@ -2135,29 +2136,29 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse Computer Name - + Nome Computer Password - + Password Repeat Password - + Ripetere Password When this box is checked, password-strength checking is done and you will not be able to use a weak password. - + Quando questa casella è selezionata, la robustezza della password viene verificata e non sarà possibile utilizzare password deboli. Require strong passwords. - + È richiesta una password robusta. @@ -2443,7 +2444,7 @@ Il programma d'installazione sarà terminato e tutte le modifiche andranno perse There are no partitions to install on. - + Non ci sono partizioni su cui installare. @@ -2630,7 +2631,7 @@ Output: No product - + Nessun prodotto @@ -2643,17 +2644,17 @@ Output: File not found - + File non trovato Path <pre>%1</pre> must be an absolute path. - + Il percorso <pre>%1</pre> deve essere un percorso assoluto. Could not create new random file <pre>%1</pre>. - + Impossibile creare un nuovo file random <pre>%1</pre>. @@ -2672,7 +2673,7 @@ Output: The installer failed to remove a volume group named '%1'. - + Il programma di installazione non è riuscito a rimuovere il gruppo di volumi denominato '%1'. @@ -2771,7 +2772,7 @@ Output: KPMCore not Available - + KPMCore non Disponibile @@ -3533,7 +3534,8 @@ Output: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> + <p>Questo è un esempio di note di rilascio.</p> @@ -3541,32 +3543,32 @@ Output: <h3>%1 <quote>%2</quote></h3> - + <h3>%1 <quote>%2</quote></h3> About - + Informazioni su Support - + Supporto Known issues - + Problemi conosciuti Release notes - + Note di rilascio Donate - + Donazioni diff --git a/lang/calamares_lt.ts b/lang/calamares_lt.ts index c0e28c132..63a79157e 100644 --- a/lang/calamares_lt.ts +++ b/lang/calamares_lt.ts @@ -212,17 +212,17 @@ Loading ... - + Įkeliama... QML Step <i>%1</i>. - + QML <i>%1</i> žingsnis. Loading failed. - + Įkėlimas nepavyko. @@ -1636,7 +1636,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Could not configure LUKS key file on partition %1. - + Nepavyko konfigūruoti LUKS rakto failo skaidinyje %1. @@ -1696,52 +1696,52 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Office software - + Raštinės programinė įranga Office package - + Raštinės paketas Browser software - + Naršyklės programinė įranga Browser package - + Naršyklės paketas Web browser - + Saityno naršyklė Kernel - + Branduolys Services - + Tarnybos Login - + Prisijungimas Desktop - + Darbalaukis Applications - + Programos @@ -1749,7 +1749,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. Notes - + Pastabos @@ -2449,7 +2449,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti. There are no partitions to install on. - + Nėra skaidinių į kuriuos diegti. @@ -3539,7 +3539,8 @@ Išvestis: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> + <p>Tai yra pavyzdinė laidos informacija.</p> @@ -3547,32 +3548,32 @@ Išvestis: <h3>%1 <quote>%2</quote></h3> - + <h3>%1 <quote>%2</quote></h3> About - + Apie Support - + Palaikymas Known issues - + Žinomos problemos Release notes - + Laidos informacija Donate - + Paaukoti diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 65c6c39bc..e56c960d9 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -212,17 +212,17 @@ Loading ... - + Carregando ... QML Step <i>%1</i>. - + Passo QML <i>%1</i>. Loading failed. - + Carregamento falhou. @@ -1632,7 +1632,7 @@ O instalador será fechado e todas as alterações serão perdidas. Could not configure LUKS key file on partition %1. - + Não foi possível configurar a chave LUKS na partição %1. @@ -1692,52 +1692,52 @@ O instalador será fechado e todas as alterações serão perdidas. Office software - + Software de office Office package - + Pacote office Browser software - + Softwares de browser Browser package - + Pacote de browser Web browser - + Navegador web Kernel - + Kernel Services - + Seriços Login - + Login Desktop - + Área de trabalho Applications - + Aplicações @@ -1745,7 +1745,7 @@ O instalador será fechado e todas as alterações serão perdidas. Notes - + Notas @@ -2445,7 +2445,7 @@ O instalador será fechado e todas as alterações serão perdidas. There are no partitions to install on. - + Não há partições para instalar. @@ -3535,7 +3535,8 @@ Saída: <h3>%1</h3> <p>These are example release notes.</p> - + <h3>%1</h3> + <p>These are example release notes.</p> @@ -3543,32 +3544,32 @@ Saída: <h3>%1 <quote>%2</quote></h3> - + <h3>%1 <quote>%2</quote></h3> About - + Sobre Support - + Suporte Known issues - + Problemas conhecidos Release notes - + Notas de lançamento Donate - + Faça uma doação diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index a1da26312..a04763d08 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -1333,7 +1333,7 @@ The installer will quit and all changes will be lost. Collecting information about your machine. - + Сбор информации о вашем компьютере. @@ -1458,7 +1458,7 @@ The installer will quit and all changes will be lost. <h1>License Agreement</h1> - + <h1>Лицензионное соглашение</h1> @@ -1541,17 +1541,17 @@ The installer will quit and all changes will be lost. File: %1 - + Файл: %1 Show the license text - + Показать текст лицензии Open license agreement in browser. - + Открыть лицензионное соглашение в браузере. @@ -1714,12 +1714,12 @@ The installer will quit and all changes will be lost. Web browser - + Веб-браузер Kernel - + Ядро @@ -1739,7 +1739,7 @@ The installer will quit and all changes will be lost. Applications - + Приложения @@ -2026,7 +2026,7 @@ The installer will quit and all changes will be lost. Password is empty - + Пустой пароль @@ -2124,7 +2124,7 @@ The installer will quit and all changes will be lost. Your Full Name - + Ваше полное имя @@ -2139,19 +2139,19 @@ The installer will quit and all changes will be lost. Computer Name - + Имя компьютера Password - + Пароль Repeat Password - + Повторите пароль @@ -2647,17 +2647,17 @@ Output: File not found - + Файл не найден Path <pre>%1</pre> must be an absolute path. - + Путь <pre>%1</pre> должен быть абсолютным путём. Could not create new random file <pre>%1</pre>. - + Не удалось создать новый случайный файл <pre>%1</pre>. @@ -2795,12 +2795,12 @@ Output: The filesystem %1 could not be found in this system, and cannot be resized. - + Файловая система %1 не обнаружена в этой системе, поэтому её размер невозможно изменить. The device %1 could not be found in this system, and cannot be resized. - + Устройство %1 не обнаружено в этой системе, поэтому его размер невозможно изменить. @@ -3319,12 +3319,12 @@ Output: Only lowercase letters, numbers, underscore and hyphen are allowed. - + Допускаются только строчные буквы, числа, символы подчёркивания и дефисы. Only letters, numbers, underscore and hyphen are allowed. - + Допускаются только буквы, цифры, символы подчёркивания и дефисы. @@ -3373,7 +3373,7 @@ Output: List of Physical Volumes - + Список физических томов diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 8a8b461a4..f66197a97 100644 Binary files a/lang/python/it_IT/LC_MESSAGES/python.mo and b/lang/python/it_IT/LC_MESSAGES/python.mo differ diff --git a/lang/python/it_IT/LC_MESSAGES/python.po b/lang/python/it_IT/LC_MESSAGES/python.po index b7aa8b2a7..31b21fbe5 100644 --- a/lang/python/it_IT/LC_MESSAGES/python.po +++ b/lang/python/it_IT/LC_MESSAGES/python.po @@ -5,8 +5,8 @@ # # Translators: # Saverio , 2018 -# Pietro F. Fontana, 2018 # Pierfrancesco Passerini , 2019 +# Pietro F. Fontana, 2020 # #, fuzzy msgid "" @@ -15,7 +15,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-02-19 17:27+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Pierfrancesco Passerini , 2019\n" +"Last-Translator: Pietro F. Fontana, 2020\n" "Language-Team: Italian (Italy) (https://www.transifex.com/calamares/teams/20061/it_IT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -41,7 +41,7 @@ msgstr "" #: src/modules/fstab/main.py:328 src/modules/localecfg/main.py:144 #: src/modules/networkcfg/main.py:48 msgid "Configuration Error" -msgstr "" +msgstr "Errore di Configurazione" #: src/modules/mount/main.py:146 src/modules/initcpiocfg/main.py:202 #: src/modules/luksopenswaphookcfg/main.py:96 src/modules/rawfs/main.py:172 diff --git a/src/calamares/CalamaresWindow.cpp b/src/calamares/CalamaresWindow.cpp index ac00bafd4..1c7ecf813 100644 --- a/src/calamares/CalamaresWindow.cpp +++ b/src/calamares/CalamaresWindow.cpp @@ -135,7 +135,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent ) sideLayout->addWidget( tv ); tv->setFocusPolicy( Qt::NoFocus ); - if ( Calamares::Settings::instance()->debugMode() ) + if ( Calamares::Settings::instance()->debugMode() || ( Logger::logLevel() >= Logger::LOGVERBOSE ) ) { QPushButton* debugWindowBtn = new QPushButton; debugWindowBtn->setObjectName( "debugButton" ); diff --git a/src/libcalamares/partition/Mount.cpp b/src/libcalamares/partition/Mount.cpp index 91fcefff5..aa30c9d92 100644 --- a/src/libcalamares/partition/Mount.cpp +++ b/src/libcalamares/partition/Mount.cpp @@ -105,8 +105,9 @@ TemporaryMount::TemporaryMount( const QString& devicePath, const QString& filesy m_d->m_devicePath = devicePath; m_d->m_mountDir.setAutoRemove( false ); int r = mount( devicePath, m_d->m_mountDir.path(), filesystemName, options ); - if ( !r ) + if ( r ) { + cWarning() << "Mount of" << devicePath << "on" << m_d->m_mountDir.path() << "failed, code" << r; delete m_d; m_d = nullptr; } @@ -116,7 +117,12 @@ TemporaryMount::~TemporaryMount() { if ( m_d ) { - unmount( m_d->m_devicePath, { "-R" } ); + int r = unmount( m_d->m_devicePath, { "-R" } ); + if ( r ) + { + cWarning() << "UnMount of temporary" << m_d->m_devicePath << "on" << m_d->m_mountDir.path() + << "failed, code" << r; + } delete m_d; m_d = nullptr; } diff --git a/src/libcalamares/partition/Sync.cpp b/src/libcalamares/partition/Sync.cpp index c5e131cfa..c71c6a172 100644 --- a/src/libcalamares/partition/Sync.cpp +++ b/src/libcalamares/partition/Sync.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2019, Adriaan de Groot + * Copyright 2019-2020, 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 @@ -24,7 +24,14 @@ void CalamaresUtils::Partition::sync() { - auto r = CalamaresUtils::System::runCommand( { "/sbin/udevadm", "settle" }, std::chrono::seconds( 10 ) ); + /* I would normally use full paths here, e.g. /sbin/udevadm and /bin/sync, + * but there's enough variation / opinion on where these executables + * should live, that full paths would need to be configurable. + * Instead, just run them and assume they're found in PATH; + * either chroot(8) or env(1) is used to run the command, + * and they do suitable lookup. + */ + auto r = CalamaresUtils::System::runCommand( { "udevadm", "settle" }, std::chrono::seconds( 10 ) ); if ( r.getExitCode() != 0 ) { @@ -32,5 +39,5 @@ CalamaresUtils::Partition::sync() r.explainProcess( "udevadm", std::chrono::seconds( 10 ) ); } - CalamaresUtils::System::runCommand( { "/bin/sync" }, std::chrono::seconds( 10 ) ); + CalamaresUtils::System::runCommand( { "sync" }, std::chrono::seconds( 10 ) ); } diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index a38b28b6d..c464e93f6 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -247,7 +247,7 @@ System::targetPath( const QString& path ) const } CreationResult -System::createTargetFile( const QString& path, const QByteArray& contents ) const +System::createTargetFile( const QString& path, const QByteArray& contents, WriteMode mode ) const { QString completePath = targetPath( path ); if ( completePath.isEmpty() ) @@ -256,7 +256,7 @@ System::createTargetFile( const QString& path, const QByteArray& contents ) cons } QFile f( completePath ); - if ( f.exists() ) + if ( ( mode == WriteMode::KeepExisting ) && f.exists() ) { return CreationResult( CreationResult::Code::AlreadyExists ); } @@ -264,7 +264,7 @@ System::createTargetFile( const QString& path, const QByteArray& contents ) cons QIODevice::OpenMode m = #if QT_VERSION >= QT_VERSION_CHECK( 5, 11, 0 ) // New flag from Qt 5.11, implies WriteOnly - QIODevice::NewOnly | + ( mode == WriteMode::KeepExisting ? QIODevice::NewOnly : QIODevice::WriteOnly ) | #endif QIODevice::WriteOnly | QIODevice::Truncate; diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.h b/src/libcalamares/utils/CalamaresUtilsSystem.h index a163a1208..c4db9dc00 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.h +++ b/src/libcalamares/utils/CalamaresUtilsSystem.h @@ -258,6 +258,12 @@ public: */ DLLEXPORT QString targetPath( const QString& path ) const; + enum class WriteMode + { + KeepExisting, + Overwrite + }; + /** @brief Create a (small-ish) file in the target system. * * @param path Path to the file; this is interpreted @@ -265,14 +271,18 @@ public: * but / in the chroot, or / in OEM modes). * @param contents Actual content of the file. * - * Will not overwrite files. Returns an empty string if the - * target file already exists. + * If the target already exists: + * - returns AlreadyExists as a result (and does not overwrite), + * - **unless** @p mode is set to Overwrite, then it tries writing as + * usual and will not return AlreadyExists. * * @return The complete canonical path to the target file from the * root of the host system, or empty on failure. (Here, it is * possible to be canonical because the file exists). */ - DLLEXPORT CreationResult createTargetFile( const QString& path, const QByteArray& contents ) const; + DLLEXPORT CreationResult createTargetFile( const QString& path, + const QByteArray& contents, + WriteMode mode = WriteMode::KeepExisting ) const; /** @brief Remove a file from the target system. * diff --git a/src/libcalamares/utils/TestPaths.cpp b/src/libcalamares/utils/TestPaths.cpp index 612c8f97d..2fd7b9c98 100644 --- a/src/libcalamares/utils/TestPaths.cpp +++ b/src/libcalamares/utils/TestPaths.cpp @@ -49,6 +49,8 @@ private Q_SLOTS: void testCreationResult(); void testTargetPath(); void testCreateTarget(); + void testCreateTargetExists(); + void testCreateTargetOverwrite(); void testCreateTargetBasedirs(); private: @@ -96,31 +98,32 @@ TestPaths::init() m_gs->insert( "rootMountPoint", "/tmp" ); } -void TestPaths::testCreationResult() +void +TestPaths::testCreationResult() { using Code = CalamaresUtils::CreationResult::Code; - for( auto c : { Code::OK, Code::AlreadyExists, Code::Failed, Code::Invalid } ) + for ( auto c : { Code::OK, Code::AlreadyExists, Code::Failed, Code::Invalid } ) { auto r = CalamaresUtils::CreationResult( c ); QVERIFY( r.path().isEmpty() ); QCOMPARE( r.path(), QString() ); // Get a warning from Clang if we're not covering everything - switch( r.code() ) + switch ( r.code() ) { - case Code::OK: - QVERIFY( !r.failed() ); - QVERIFY( r ); - break; - case Code::AlreadyExists: - QVERIFY( !r.failed() ); - QVERIFY( !r ); - break; - case Code::Failed: - case Code::Invalid: - QVERIFY( r.failed() ); - QVERIFY( !r ); - break; + case Code::OK: + QVERIFY( !r.failed() ); + QVERIFY( r ); + break; + case Code::AlreadyExists: + QVERIFY( !r.failed() ); + QVERIFY( !r ); + break; + case Code::Failed: + case Code::Invalid: + QVERIFY( r.failed() ); + QVERIFY( !r ); + break; } } @@ -168,6 +171,75 @@ TestPaths::testCreateTarget() QVERIFY( !fi2.exists() ); } +struct GSRollback +{ + GSRollback( const QString& key ) + : m_key( key ) + , m_value( Calamares::JobQueue::instance()->globalStorage()->value( key ) ) + { + } + ~GSRollback() { Calamares::JobQueue::instance()->globalStorage()->insert( m_key, m_value ); } + QString m_key; + QVariant m_value; +}; + + +void +TestPaths::testCreateTargetExists() +{ + static const char ltestFile[] = "cala-test-world"; + GSRollback g( QStringLiteral( "rootMountPoint" ) ); + + QTemporaryDir d; + d.setAutoRemove( true ); + Calamares::JobQueue::instance()->globalStorage()->insert( QStringLiteral( "rootMountPoint" ), d.path() ); + + QVERIFY( QFileInfo( d.path() ).exists() ); + auto r = m_system->createTargetFile( ltestFile, "Hello" ); + QVERIFY( r ); + QVERIFY( r.path().endsWith( QString( ltestFile ) ) ); + QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 ); + + r = m_system->createTargetFile( ltestFile, "Goodbye" ); + QVERIFY( !r.failed() ); // It didn't fail! + QVERIFY( !r ); // But not unqualified success, either + + QVERIFY( r.path().isEmpty() ); + QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 ); // Unchanged! +} + +void +TestPaths::testCreateTargetOverwrite() +{ + static const char ltestFile[] = "cala-test-world"; + GSRollback g( QStringLiteral( "rootMountPoint" ) ); + + QTemporaryDir d; + d.setAutoRemove( true ); + Calamares::JobQueue::instance()->globalStorage()->insert( QStringLiteral( "rootMountPoint" ), d.path() ); + + QVERIFY( QFileInfo( d.path() ).exists() ); + auto r = m_system->createTargetFile( ltestFile, "Hello" ); + QVERIFY( r ); + QVERIFY( r.path().endsWith( QString( ltestFile ) ) ); + QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 ); + + r = m_system->createTargetFile( ltestFile, "Goodbye", CalamaresUtils::System::WriteMode::KeepExisting ); + QVERIFY( !r.failed() ); // It didn't fail! + QVERIFY( !r ); // But not unqualified success, either + + QVERIFY( r.path().isEmpty() ); + QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 ); // Unchanged! + + r = m_system->createTargetFile( ltestFile, "Goodbye", CalamaresUtils::System::WriteMode::Overwrite ); + QVERIFY( !r.failed() ); // It didn't fail! + QVERIFY( r ); // Total success + + QVERIFY( r.path().endsWith( QString( ltestFile ) ) ); + QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 7 ); +} + + struct DirRemover { DirRemover( const QString& base, const QString& dir ) diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 39d50b20c..cb218961b 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -74,6 +74,12 @@ def modify_grub_default(partitions, root_mount_point, distributor): swap_uuid = "" swap_outer_uuid = "" swap_outer_mappername = None + no_save_default = False + + for partition in partitions: + if partition["mountPoint"] in ("/", "/boot") and partition["fs"] in ("btrfs", "f2fs"): + no_save_default = True + break if have_plymouth: use_splash = "splash" @@ -198,6 +204,9 @@ def modify_grub_default(partitions, root_mount_point, distributor): # We're not updating because of *keepDistributor*, but if # this was a comment line, then it's still not been set. have_distributor_line = have_distributor_line or not lines[i].startswith("#") + # If btrfs or f2fs is used, don't save default + if no_save_default and lines[i].startswith("GRUB_SAVEDEFAULT="): + lines[i] = "#GRUB_SAVEDEFAULT=\"true\"" else: lines = [] diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index ba1d962bb..b3c43ea0b 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -144,6 +144,10 @@ def modify_mkinitcpio_conf(partitions, root_mount_point): hooks.append("bootsplash-{!s}".format(bootsplash_theme)) for partition in partitions: + if partition["fs"] == "linuxswap" and not partition.get("claimed", None): + # Skip foreign swap + continue + if partition["fs"] == "linuxswap": swap_uuid = partition["uuid"] if "luksMapperName" in partition: diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index db220d042..555fcdc7d 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -31,6 +31,8 @@ #include #include +using WriteMode = CalamaresUtils::System::WriteMode; + SetHostNameJob::SetHostNameJob( const QString& hostname, Actions a ) : Calamares::Job() , m_hostname( hostname ) @@ -61,9 +63,8 @@ SetHostNameJob::prettyStatusMessage() const STATICTEST bool setFileHostname( const QString& hostname ) { - return !( CalamaresUtils::System::instance() - ->createTargetFile( QStringLiteral( "/etc/hostname" ), ( hostname + '\n' ).toUtf8() ) - .failed() ); + return CalamaresUtils::System::instance()->createTargetFile( + QStringLiteral( "/etc/hostname" ), ( hostname + '\n' ).toUtf8(), WriteMode::Overwrite ); } STATICTEST bool @@ -78,9 +79,8 @@ ff02::1 ip6-allnodes ff02::2 ip6-allrouters )"; - return !( CalamaresUtils::System::instance() - ->createTargetFile( QStringLiteral( "/etc/hosts" ), QString( etc_hosts ).arg( hostname ).toUtf8() ) - .failed() ); + return CalamaresUtils::System::instance()->createTargetFile( + QStringLiteral( "/etc/hosts" ), QString( etc_hosts ).arg( hostname ).toUtf8(), WriteMode::Overwrite ); } STATICTEST bool diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 21f472a40..a18d3a82d 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -105,6 +105,16 @@ UsersPage::UsersPage( QWidget* parent ) checkReady( isReady() ); } ); connect( ui->checkBoxReusePassword, &QCheckBox::stateChanged, this, [this]( int checked ) { + /* When "reuse" is checked, hide the fields for explicitly + * entering the root password. However, if we're going to + * disable the root password anyway, hide them all regardless of + * the checkbox -- so when writeRoot is false, checked needs + * to be true, to hide them all. + */ + if ( !m_writeRootPassword ) + { + checked = true; + } ui->labelChooseRootPassword->setVisible( !checked ); ui->labelRootPassword->setVisible( !checked ); ui->labelRootPasswordError->setVisible( !checked ); @@ -246,8 +256,8 @@ UsersPage::onActivate() void UsersPage::setWriteRootPassword( bool write ) { - ui->checkBoxReusePassword->setVisible( write ); m_writeRootPassword = write; + ui->checkBoxReusePassword->setVisible( write ); } diff --git a/src/modules/users/users.conf b/src/modules/users/users.conf index 1c928fd3a..174a60142 100644 --- a/src/modules/users/users.conf +++ b/src/modules/users/users.conf @@ -45,8 +45,11 @@ doAutologin: true # potentially confusing users. sudoersGroup: wheel -# Setting this to false , causes the root account to be disabled. +# Setting this to false, causes the root account to be disabled. +# When disabled, hides the "Use the same password for administrator" +# checkbox. Also hides the "Choose a password" and associated text-inputs. setRootPassword: true + # You can control the initial state for the 'reuse password for root' # checkbox here. Possible values are: # - true to check or