From 70a59d6cd1a77cbf16ddb7862c28b1f7fcb2b620 Mon Sep 17 00:00:00 2001 From: Penvern Vincent Date: Sat, 13 Apr 2024 02:09:09 +0200 Subject: [PATCH 01/57] add possibility to pre check encryption checkox --- src/modules/partition/PartitionViewStep.cpp | 2 ++ src/modules/partition/gui/ChoicePage.cpp | 7 +++++++ src/modules/partition/gui/ChoicePage.h | 1 + src/modules/partition/gui/EncryptWidget.cpp | 5 +++++ src/modules/partition/gui/EncryptWidget.h | 1 + src/modules/partition/partition.conf | 5 +++++ src/modules/partition/partition.schema.yaml | 1 + 7 files changed, 22 insertions(+) diff --git a/src/modules/partition/PartitionViewStep.cpp b/src/modules/partition/PartitionViewStep.cpp index 119bf1baa..4b170a8ab 100644 --- a/src/modules/partition/PartitionViewStep.cpp +++ b/src/modules/partition/PartitionViewStep.cpp @@ -698,6 +698,8 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) Calamares::getBool( configurationMap, "alwaysShowPartitionLabels", true ) ); gs->insert( "enableLuksAutomatedPartitioning", Calamares::getBool( configurationMap, "enableLuksAutomatedPartitioning", true ) ); + gs->insert( "preCheckEncryption", + Calamares::getBool( configurationMap, "preCheckEncryption", false ) ); QString partitionTableName = Calamares::getString( configurationMap, "defaultPartitionTableType" ); if ( partitionTableName.isEmpty() ) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 8a1313237..823525fd3 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -83,12 +83,14 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) , m_beforePartitionLabelsView( nullptr ) , m_bootloaderComboBox( nullptr ) , m_enableEncryptionWidget( true ) + , m_preCheckEncryption( false ) { setupUi( this ); auto gs = Calamares::JobQueue::instance()->globalStorage(); m_enableEncryptionWidget = gs->value( "enableLuksAutomatedPartitioning" ).toBool(); + m_preCheckEncryption = gs->value( "preCheckEncryption" ).toBool(); // Set up drives combo m_mainLayout->setDirection( QBoxLayout::TopToBottom ); @@ -468,6 +470,11 @@ ChoicePage::onActionChanged() { m_encryptWidget->setFilesystem( FileSystem::typeForName( m_replaceFsTypesChoiceComboBox->currentText() ) ); } + + if ( m_preCheckEncryption ) + { + m_encryptWidget->setEncryptionCheckbox( m_preCheckEncryption ); + } } Device* currd = selectedDevice(); diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 7deb4dec6..0508cb9cd 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -170,6 +170,7 @@ private: int m_lastSelectedDeviceIndex = -1; bool m_enableEncryptionWidget = false; + bool m_preCheckEncryption = false; QMutex m_coreMutex; }; diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 176a7c610..3d5f122f2 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -70,6 +70,11 @@ EncryptWidget::EncryptWidget( QWidget* parent ) CALAMARES_RETRANSLATE_SLOT( &EncryptWidget::retranslate ); } +void EncryptWidget::setEncryptionCheckbox( bool preCheckEncrypt) +{ + m_ui->m_encryptCheckBox->setChecked( preCheckEncrypt ); +} + void EncryptWidget::reset( bool checkVisible ) { diff --git a/src/modules/partition/gui/EncryptWidget.h b/src/modules/partition/gui/EncryptWidget.h index 9669b4d21..8833f61ad 100644 --- a/src/modules/partition/gui/EncryptWidget.h +++ b/src/modules/partition/gui/EncryptWidget.h @@ -36,6 +36,7 @@ public: explicit EncryptWidget( QWidget* parent = nullptr ); + void setEncryptionCheckbox( bool preCheckEncrypt = false); void reset( bool checkVisible = true ); Encryption state() const; diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index 0975179de..3d335432f 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -240,6 +240,11 @@ defaultFileSystemType: "ext4" # If nothing is specified, LUKS is enabled in automated modes. #enableLuksAutomatedPartitioning: true +# When enableLuksAutomatedPartitioning is true, this option will pre-check +# encryption checkbox. This option is only usefull to help people to not forget +# to cypher their disk when installing in enterprise (for exemple). +#preCheckEncryption: false + # Partition layout. # # This optional setting specifies a custom partition layout. diff --git a/src/modules/partition/partition.schema.yaml b/src/modules/partition/partition.schema.yaml index 769c1abae..65bc723f5 100644 --- a/src/modules/partition/partition.schema.yaml +++ b/src/modules/partition/partition.schema.yaml @@ -34,6 +34,7 @@ properties: luksGeneration: { type: string, enum: [luks1, luks2] } # Also allows "luks" as alias of "luks1" enableLuksAutomatedPartitioning: { type: boolean, default: false } + preCheckEncryption: { type: boolean, default: false } allowManualPartitioning: { type: boolean, default: true } showNotEncryptedBootMessage: { type: boolean, default: true } From cc835cee6f6272ef8692e88f3008f36fffe01800 Mon Sep 17 00:00:00 2001 From: Penvern Vincent Date: Mon, 15 Apr 2024 16:34:35 +0200 Subject: [PATCH 02/57] do not use Global Storage for variable PreCheckEncryption, other modules don't have to know if this variable is set to true or false --- src/modules/partition/Config.cpp | 1 + src/modules/partition/Config.h | 10 +++++++++- src/modules/partition/PartitionViewStep.cpp | 2 -- src/modules/partition/gui/ChoicePage.cpp | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/modules/partition/Config.cpp b/src/modules/partition/Config.cpp index 2010fecdd..f4e404c28 100644 --- a/src/modules/partition/Config.cpp +++ b/src/modules/partition/Config.cpp @@ -444,6 +444,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap ) m_allowZfsEncryption = Calamares::getBool( configurationMap, "allowZfsEncryption", true ); m_allowManualPartitioning = Calamares::getBool( configurationMap, "allowManualPartitioning", true ); + m_preCheckEncryption = Calamares::getBool( configurationMap, "preCheckEncryption", false ); m_showNotEncryptedBootMessage = Calamares::getBool( configurationMap, "showNotEncryptedBootMessage", true ); m_requiredPartitionTableType = Calamares::getStringList( configurationMap, "requiredPartitionTableType" ); diff --git a/src/modules/partition/Config.h b/src/modules/partition/Config.h index d8d68c6d2..199ddaf88 100644 --- a/src/modules/partition/Config.h +++ b/src/modules/partition/Config.h @@ -35,7 +35,7 @@ class Config : public QObject replaceModeFilesystemChanged ) Q_PROPERTY( bool allowManualPartitioning READ allowManualPartitioning CONSTANT FINAL ) - + Q_PROPERTY( bool preCheckEncryption READ preCheckEncryption CONSTANT FINAL ) Q_PROPERTY( bool showNotEncryptedBootMessage READ showNotEncryptedBootMessage CONSTANT FINAL ) public: @@ -148,6 +148,13 @@ public: /// @brief Is manual partitioning allowed (not explicitly disabled in the config file)? bool allowManualPartitioning() const { return m_allowManualPartitioning; } + /** @brief pre check encryption checkbox. + * + * parameter is used if enableLuksAutomatedPartitioning is true. + * Default value is false + */ + bool preCheckEncryption() const { return m_preCheckEncryption; } + /// @brief Show "Boot partition not encrypted" warning (not explicitly disabled in the config file)? bool showNotEncryptedBootMessage() const { return m_showNotEncryptedBootMessage; } @@ -199,6 +206,7 @@ private: QStringList m_requiredPartitionTableType; bool m_allowZfsEncryption = true; bool m_allowManualPartitioning = true; + bool m_preCheckEncryption = false; bool m_showNotEncryptedBootMessage = true; }; diff --git a/src/modules/partition/PartitionViewStep.cpp b/src/modules/partition/PartitionViewStep.cpp index 4b170a8ab..119bf1baa 100644 --- a/src/modules/partition/PartitionViewStep.cpp +++ b/src/modules/partition/PartitionViewStep.cpp @@ -698,8 +698,6 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) Calamares::getBool( configurationMap, "alwaysShowPartitionLabels", true ) ); gs->insert( "enableLuksAutomatedPartitioning", Calamares::getBool( configurationMap, "enableLuksAutomatedPartitioning", true ) ); - gs->insert( "preCheckEncryption", - Calamares::getBool( configurationMap, "preCheckEncryption", false ) ); QString partitionTableName = Calamares::getString( configurationMap, "defaultPartitionTableType" ); if ( partitionTableName.isEmpty() ) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 823525fd3..ccb59e5cb 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -90,7 +90,7 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) auto gs = Calamares::JobQueue::instance()->globalStorage(); m_enableEncryptionWidget = gs->value( "enableLuksAutomatedPartitioning" ).toBool(); - m_preCheckEncryption = gs->value( "preCheckEncryption" ).toBool(); + m_preCheckEncryption = m_config->preCheckEncryption(); // Set up drives combo m_mainLayout->setDirection( QBoxLayout::TopToBottom ); From 5ac23cd3d60f956fd5525b66c738e0178e07d491 Mon Sep 17 00:00:00 2001 From: Penvern Vincent Date: Mon, 15 Apr 2024 22:44:42 +0200 Subject: [PATCH 03/57] Remove m_preCheckEncryption variable from ChoicePage --- src/modules/partition/gui/ChoicePage.cpp | 6 ++---- src/modules/partition/gui/ChoicePage.h | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index ccb59e5cb..b2396ebc0 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -83,14 +83,12 @@ ChoicePage::ChoicePage( Config* config, QWidget* parent ) , m_beforePartitionLabelsView( nullptr ) , m_bootloaderComboBox( nullptr ) , m_enableEncryptionWidget( true ) - , m_preCheckEncryption( false ) { setupUi( this ); auto gs = Calamares::JobQueue::instance()->globalStorage(); m_enableEncryptionWidget = gs->value( "enableLuksAutomatedPartitioning" ).toBool(); - m_preCheckEncryption = m_config->preCheckEncryption(); // Set up drives combo m_mainLayout->setDirection( QBoxLayout::TopToBottom ); @@ -471,9 +469,9 @@ ChoicePage::onActionChanged() m_encryptWidget->setFilesystem( FileSystem::typeForName( m_replaceFsTypesChoiceComboBox->currentText() ) ); } - if ( m_preCheckEncryption ) + if ( m_config->preCheckEncryption() ) { - m_encryptWidget->setEncryptionCheckbox( m_preCheckEncryption ); + m_encryptWidget->setEncryptionCheckbox( m_config->preCheckEncryption() ); } } diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 0508cb9cd..7deb4dec6 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -170,7 +170,6 @@ private: int m_lastSelectedDeviceIndex = -1; bool m_enableEncryptionWidget = false; - bool m_preCheckEncryption = false; QMutex m_coreMutex; }; From c8c0e783c33521b86f20310d837183819987ff1e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 16 Apr 2024 15:56:48 +0200 Subject: [PATCH 04/57] Changes: post-release housekeeping --- CHANGES-3.3 | 10 ++++++++++ CMakeLists.txt | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index 9a0d0107e..a355f90af 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -7,6 +7,16 @@ contributors are listed. Note that Calamares does not have a historical changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for the history of the 3.2 series (2018-05 - 2022-08). +# 3.3.7 (unreleased) + +This release contains contributions from (alphabetically by first name): + - Nobody, yet + +## Core ## + +## Modules ## + + # 3.3.6 (2024-04-16) This release contains contributions from (alphabetically by first name): diff --git a/CMakeLists.txt b/CMakeLists.txt index 99b8d4e41..67ae8cc31 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,8 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR) -set(CALAMARES_VERSION 3.3.6) -set(CALAMARES_RELEASE_MODE ON) # Set to ON during a release +set(CALAMARES_VERSION 3.3.7) +set(CALAMARES_RELEASE_MODE OFF) # Set to ON during a release if(CMAKE_SCRIPT_MODE_FILE) include(${CMAKE_CURRENT_LIST_DIR}/CMakeModules/ExtendedVersion.cmake) From 8469fbd2e82c8008ed333007658f16cd2e4e3271 Mon Sep 17 00:00:00 2001 From: Penvern Vincent Date: Tue, 16 Apr 2024 18:08:11 +0200 Subject: [PATCH 05/57] Fix Next button behviour for all combinations of enableLuksAutomatedPartitioning and preCheckEncryption configure file variables --- src/modules/partition/gui/ChoicePage.cpp | 12 +++++------- src/modules/partition/gui/EncryptWidget.cpp | 16 ++++++++-------- src/modules/partition/gui/EncryptWidget.h | 1 + 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index b2396ebc0..3824f4c54 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -185,7 +185,6 @@ ChoicePage::init( PartitionCoreModule* core ) setModelToComboBox( m_drivesCombo, core->deviceModel() ); connect( m_drivesCombo, qOverload< int >( &QComboBox::currentIndexChanged ), this, &ChoicePage::applyDeviceChoice ); - connect( m_encryptWidget, &EncryptWidget::stateChanged, this, &ChoicePage::onEncryptWidgetStateChanged ); connect( m_reuseHomeCheckBox, &QCheckBox::stateChanged, this, &ChoicePage::onHomeCheckBoxStateChanged ); @@ -468,11 +467,8 @@ ChoicePage::onActionChanged() { m_encryptWidget->setFilesystem( FileSystem::typeForName( m_replaceFsTypesChoiceComboBox->currentText() ) ); } - - if ( m_config->preCheckEncryption() ) - { - m_encryptWidget->setEncryptionCheckbox( m_config->preCheckEncryption() ); - } + + m_encryptWidget->setEncryptionCheckbox( m_config->preCheckEncryption() ); } Device* currd = selectedDevice(); @@ -1580,7 +1576,9 @@ ChoicePage::calculateNextEnabled() const } } - if ( m_config->installChoice() != InstallChoice::Manual && m_encryptWidget->isVisible() ) + if ( m_config->installChoice() != InstallChoice::Manual + && (m_encryptWidget->isVisible() || + m_encryptWidget->isEncryptionCheckboxChecked())) { switch ( m_encryptWidget->state() ) { diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 3d5f122f2..562166a6b 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -70,6 +70,11 @@ EncryptWidget::EncryptWidget( QWidget* parent ) CALAMARES_RETRANSLATE_SLOT( &EncryptWidget::retranslate ); } +bool EncryptWidget::isEncryptionCheckboxChecked() +{ + return m_ui->m_encryptCheckBox->isChecked(); +} + void EncryptWidget::setEncryptionCheckbox( bool preCheckEncrypt) { m_ui->m_encryptCheckBox->setChecked( preCheckEncrypt ); @@ -174,15 +179,10 @@ EncryptWidget::updateState( const bool notify ) } } - Encryption newState = state(); - - if ( newState != m_state ) + m_state = state(); + if ( notify ) { - m_state = newState; - if ( notify ) - { - Q_EMIT stateChanged( m_state ); - } + Q_EMIT stateChanged( m_state ); } } diff --git a/src/modules/partition/gui/EncryptWidget.h b/src/modules/partition/gui/EncryptWidget.h index 8833f61ad..c7cc23daa 100644 --- a/src/modules/partition/gui/EncryptWidget.h +++ b/src/modules/partition/gui/EncryptWidget.h @@ -39,6 +39,7 @@ public: void setEncryptionCheckbox( bool preCheckEncrypt = false); void reset( bool checkVisible = true ); + bool isEncryptionCheckboxChecked(); Encryption state() const; void setText( const QString& text ); From cca2cd32604e8d003812c2be20e6b8fffe4d08b0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:11:40 +0200 Subject: [PATCH 06/57] [libcalamares] Remove unnecessary QApplication --- src/libcalamares/JobQueue.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 80e49dce4..8f079a9f0 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -16,7 +16,6 @@ #include "compat/Mutex.h" #include "utils/Logger.h" -#include #include #include #include From 09dae0437e8108970067756949fc15416786d392 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:48:04 +0200 Subject: [PATCH 07/57] CI: prefer newer clang-format over older --- ci/calamaresstyle | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ci/calamaresstyle b/ci/calamaresstyle index 0f5a80513..319ac7932 100755 --- a/ci/calamaresstyle +++ b/ci/calamaresstyle @@ -9,6 +9,9 @@ # You can pass in directory names, in which case the files # in that directory (NOT below it) are processed. # +# If the environment variable CLANG_FORMAT is set to a (full path) and +# that path is executable, it will be used if possible. +# LANG=C LC_ALL=C LC_NUMERIC=C @@ -20,8 +23,17 @@ test -d "$BASEDIR" || { echo "! Could not determine base for $0" ; exit 1 ; } test -d "$TOPDIR" || { echo "! Cound not determine top-level source dir" ; exit 1 ; } test -f "$TOPDIR/.clang-format" || { echo "! No .clang-format support files in $TOPDIR" ; exit 1 ; } -# Allow specifying CF_VERSIONS outside already -CF_VERSIONS="$CF_VERSIONS clang-format15 clang-format-15 clang-format-16 clang-format-16.0.6 clang-format" +# Start with CLANG_FORMAT, if it is specified +CF_VERSIONS="" +if test -n "$CLANG_FORMAT" && test -x "$CLANG_FORMAT" ; then + CF_VERSIONS="$CLANG_FORMAT" +fi +# And a bunch of other potential known versions of clang-format, newest first +CF_VERSIONS="$CF_VERSIONS clang-format-17" +CF_VERSIONS="$CF_VERSIONS clang-format-16 clang-format-16.0.6 " +CF_VERSIONS="$CF_VERSIONS clang-format15 clang-format-15 " +# Generic name of clang-format +CF_VERSIONS="$CF_VERSIONS clang-format" for _cf in $CF_VERSIONS do # Not an error if this particular clang-format isn't found From 4625208ba2223837c7e018ab3121d270c0f0288c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:50:38 +0200 Subject: [PATCH 08/57] [libcalamares] Apply newer clang-formatting --- src/libcalamares/DllMacro.h | 2 +- src/libcalamares/JobQueue.cpp | 3 +-- src/libcalamares/modulesystem/Descriptor.h | 2 +- src/libcalamares/packages/Globals.h | 10 ++++----- src/libcalamares/partition/Tests.cpp | 3 ++- src/libcalamares/utils/Units.h | 26 +++++++++++++--------- 6 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/libcalamares/DllMacro.h b/src/libcalamares/DllMacro.h index 77b25c6a6..f144d4650 100644 --- a/src/libcalamares/DllMacro.h +++ b/src/libcalamares/DllMacro.h @@ -12,7 +12,7 @@ #define DLLMACRO_H #ifndef CALAMARES_EXPORT -#define CALAMARES_EXPORT __attribute__((visibility("default"))) +#define CALAMARES_EXPORT __attribute__( ( visibility( "default" ) ) ) #endif /* diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 8f079a9f0..d35ae4514 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -135,8 +135,7 @@ PowerManagementInterface::inhibitSleep() QStringLiteral( "/org/freedesktop/PowerManagement/Inhibit" ), QStringLiteral( "org.freedesktop.PowerManagement.Inhibit" ), QStringLiteral( "Inhibit" ) ); - inhibitCall.setArguments( - { { tr( "Calamares" ) }, { tr( "Installation in progress", "@status" ) } } ); + inhibitCall.setArguments( { { tr( "Calamares" ) }, { tr( "Installation in progress", "@status" ) } } ); auto asyncReply = sessionBus.asyncCall( inhibitCall ); auto* replyWatcher = new QDBusPendingCallWatcher( asyncReply, this ); diff --git a/src/libcalamares/modulesystem/Descriptor.h b/src/libcalamares/modulesystem/Descriptor.h index 9682b2efc..b3eeface7 100644 --- a/src/libcalamares/modulesystem/Descriptor.h +++ b/src/libcalamares/modulesystem/Descriptor.h @@ -74,7 +74,7 @@ public: Interface interface() const { return m_interface; } bool isEmergency() const { return m_isEmergeny; } - bool hasConfig() const { return m_hasConfig; } // TODO: 3.5 rename to noConfig() to match descriptor key + bool hasConfig() const { return m_hasConfig; } // TODO: 3.5 rename to noConfig() to match descriptor key int weight() const { return m_weight < 1 ? 1 : m_weight; } bool explicitWeight() const { return m_weight > 0; } diff --git a/src/libcalamares/packages/Globals.h b/src/libcalamares/packages/Globals.h index 4b12e76a3..ad8d15e9d 100644 --- a/src/libcalamares/packages/Globals.h +++ b/src/libcalamares/packages/Globals.h @@ -26,17 +26,17 @@ namespace Packages * Returns @c true if anything was changed, @c false otherwise. */ DLLEXPORT bool setGSPackageAdditions( Calamares::GlobalStorage* gs, - const Calamares::ModuleSystem::InstanceKey& module, - const QVariantList& installPackages, - const QVariantList& tryInstallPackages ); + const Calamares::ModuleSystem::InstanceKey& module, + const QVariantList& installPackages, + const QVariantList& tryInstallPackages ); /** @brief Sets the install-packages GS keys for the given module * * This replaces previously-set install-packages lists. Use this with * plain lists of package names. It does not support try-install. */ DLLEXPORT bool setGSPackageAdditions( Calamares::GlobalStorage* gs, - const Calamares::ModuleSystem::InstanceKey& module, - const QStringList& installPackages ); + const Calamares::ModuleSystem::InstanceKey& module, + const QStringList& installPackages ); // void setGSPackageRemovals( const Calamares::ModuleSystem::InstanceKey& key, const QVariantList& removePackages ); } // namespace Packages } // namespace Calamares diff --git a/src/libcalamares/partition/Tests.cpp b/src/libcalamares/partition/Tests.cpp index 582accf8c..a1ad3b708 100644 --- a/src/libcalamares/partition/Tests.cpp +++ b/src/libcalamares/partition/Tests.cpp @@ -110,7 +110,8 @@ PartitionServiceTests::testUnitComparison() } /* Operator to make the table in testUnitNormalisation_data easier to write */ -constexpr qint64 operator""_qi( unsigned long long m ) +constexpr qint64 +operator""_qi( unsigned long long m ) { return qint64( m ); } diff --git a/src/libcalamares/utils/Units.h b/src/libcalamares/utils/Units.h index 173f83a24..824679b26 100644 --- a/src/libcalamares/utils/Units.h +++ b/src/libcalamares/utils/Units.h @@ -24,39 +24,45 @@ namespace Units { /** User defined literals, 1_KB is 1 KiloByte (= 10^3 bytes) */ -constexpr qint64 operator""_KB( unsigned long long m ) +constexpr qint64 +operator""_KB( unsigned long long m ) { return qint64( m ) * 1000; } /** User defined literals, 1_KiB is 1 KibiByte (= 2^10 bytes) */ -constexpr qint64 operator""_KiB( unsigned long long m ) +constexpr qint64 +operator""_KiB( unsigned long long m ) { return qint64( m ) * 1024; } /** User defined literals, 1_MB is 1 MegaByte (= 10^6 bytes) */ -constexpr qint64 operator""_MB( unsigned long long m ) +constexpr qint64 +operator""_MB( unsigned long long m ) { - return operator""_KB(m)*1000; + return operator""_KB( m ) * 1000; } /** User defined literals, 1_MiB is 1 MibiByte (= 2^20 bytes) */ -constexpr qint64 operator""_MiB( unsigned long long m ) +constexpr qint64 +operator""_MiB( unsigned long long m ) { - return operator""_KiB(m)*1024; + return operator""_KiB( m ) * 1024; } /** User defined literals, 1_GB is 1 GigaByte (= 10^9 bytes) */ -constexpr qint64 operator""_GB( unsigned long long m ) +constexpr qint64 +operator""_GB( unsigned long long m ) { - return operator""_MB(m)*1000; + return operator""_MB( m ) * 1000; } /** User defined literals, 1_GiB is 1 GibiByte (= 2^30 bytes) */ -constexpr qint64 operator""_GiB( unsigned long long m ) +constexpr qint64 +operator""_GiB( unsigned long long m ) { - return operator""_MiB(m)*1024; + return operator""_MiB( m ) * 1024; } } // namespace Units From 8408a3284b961069d2696eafb60abd0cbdfde617 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:51:25 +0200 Subject: [PATCH 09/57] [libcalamaresui] Apply newer clang-formatting --- src/libcalamaresui/modulesystem/PythonJobModule.cpp | 2 +- src/libcalamaresui/viewpages/ExecutionViewStep.cpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libcalamaresui/modulesystem/PythonJobModule.cpp b/src/libcalamaresui/modulesystem/PythonJobModule.cpp index bd406fd21..d9ae7f115 100644 --- a/src/libcalamaresui/modulesystem/PythonJobModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonJobModule.cpp @@ -14,7 +14,7 @@ #ifdef WITH_PYBIND11 #include "python/PythonJob.h" using JobType = Calamares::Python::Job; -#elif defined(WITH_BOOST_PYTHON) +#elif defined( WITH_BOOST_PYTHON ) // Old Boost::Python version #include "PythonJob.h" using JobType = Calamares::PythonJob; diff --git a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp index cce87ebe5..71ea85b8e 100644 --- a/src/libcalamaresui/viewpages/ExecutionViewStep.cpp +++ b/src/libcalamaresui/viewpages/ExecutionViewStep.cpp @@ -73,9 +73,8 @@ ExecutionViewStep::ExecutionViewStep( QObject* parent ) { m_widget->setObjectName( "slideshow" ); m_progressBar->setObjectName( "exec-progress" ); - CALAMARES_RETRANSLATE( - m_progressBar->setFormat( tr( "%p%", "Progress percentage indicator: %p is where the number 0..100 is placed" ) ); - ); + CALAMARES_RETRANSLATE( m_progressBar->setFormat( + tr( "%p%", "Progress percentage indicator: %p is where the number 0..100 is placed" ) ); ); m_label->setObjectName( "exec-message" ); QVBoxLayout* layout = new QVBoxLayout( m_widget ); From df09d7ae892b64c60ec1cbfa05b0afad804df5e8 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:52:32 +0200 Subject: [PATCH 10/57] [calamares] Apply newer clang-formatting --- src/calamares/DebugWindow.cpp | 2 +- src/calamares/testmain.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/calamares/DebugWindow.cpp b/src/calamares/DebugWindow.cpp index e27fc0a7b..51b3fcaa4 100644 --- a/src/calamares/DebugWindow.cpp +++ b/src/calamares/DebugWindow.cpp @@ -42,7 +42,7 @@ static void crash() { - kill(getpid(), SIGTRAP); + kill( getpid(), SIGTRAP ); } /// @brief Print out the widget tree (names) in indented form. diff --git a/src/calamares/testmain.cpp b/src/calamares/testmain.cpp index ad40aadfc..c25bc519c 100644 --- a/src/calamares/testmain.cpp +++ b/src/calamares/testmain.cpp @@ -560,10 +560,13 @@ main( int argc, char* argv[] ) cDebug() << Logger::SubEntry << "Module metadata" << TR( "name", m->name() ) << TR( "type", m->typeString() ) << TR( "interface", m->interfaceString() ); - Calamares::JobQueue::instance()->enqueue(100, m->jobs()); + Calamares::JobQueue::instance()->enqueue( 100, m->jobs() ); - QObject::connect(Calamares::JobQueue::instance(), &Calamares::JobQueue::finished, [application]() { QTimer::singleShot(std::chrono::seconds(3), application, &QApplication::quit); }); - QTimer::singleShot(0, []() { Calamares::JobQueue::instance()->start(); }); + QObject::connect( Calamares::JobQueue::instance(), + &Calamares::JobQueue::finished, + [ application ]() + { QTimer::singleShot( std::chrono::seconds( 3 ), application, &QApplication::quit ); } ); + QTimer::singleShot( 0, []() { Calamares::JobQueue::instance()->start(); } ); return application->exec(); } From 2100d273ce15246c6abf9daddd529fcbf096bcb4 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:16 +0200 Subject: [PATCH 11/57] [finished] Apply newer clang-formatting --- src/modules/finished/Config.cpp | 8 +++++--- src/modules/finished/FinishedPage.cpp | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/modules/finished/Config.cpp b/src/modules/finished/Config.cpp index 136717f31..f54b20091 100644 --- a/src/modules/finished/Config.cpp +++ b/src/modules/finished/Config.cpp @@ -139,7 +139,8 @@ Config::doNotify( bool hasFailed, bool sendAnyway ) QString message; if ( hasFailed ) { - title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Failed", "@title" ) : tr( "Installation Failed", "@title" ); + title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Failed", "@title" ) + : tr( "Installation Failed", "@title" ); message = Calamares::Settings::instance()->isSetupMode() ? tr( "The setup of %1 did not complete successfully.", "@info" ) : tr( "The installation of %1 did not complete successfully.", "@info" ); @@ -148,8 +149,9 @@ Config::doNotify( bool hasFailed, bool sendAnyway ) { title = Calamares::Settings::instance()->isSetupMode() ? tr( "Setup Complete", "@title" ) : tr( "Installation Complete", "@title" ); - message = Calamares::Settings::instance()->isSetupMode() ? tr( "The setup of %1 is complete.", "@info" ) - : tr( "The installation of %1 is complete.", "@info" ); + message = Calamares::Settings::instance()->isSetupMode() + ? tr( "The setup of %1 is complete.", "@info" ) + : tr( "The installation of %1 is complete.", "@info" ); } const auto* branding = Calamares::Branding::instance(); diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index 23cb194c4..51be52678 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -74,26 +74,30 @@ FinishedPage::retranslate() { ui->mainText->setText( tr( "

All done.


" "%1 has been set up on your computer.
" - "You may now start using your new system.", "@info" ) + "You may now start using your new system.", + "@info" ) .arg( branding->versionedName() ) ); ui->restartCheckBox->setToolTip( tr( "" "

When this box is checked, your system will " "restart immediately when you click on " "Done " - "or close the setup program.

", "@tooltip" ) ); + "or close the setup program.

", + "@tooltip" ) ); } else { ui->mainText->setText( tr( "

All done.


" "%1 has been installed on your computer.
" "You may now restart into your new system, or continue " - "using the %2 Live environment.", "@info" ) + "using the %2 Live environment.", + "@info" ) .arg( branding->versionedName(), branding->productName() ) ); ui->restartCheckBox->setToolTip( tr( "" "

When this box is checked, your system will " "restart immediately when you click on " "Done " - "or close the installer.

", "@tooltip" ) ); + "or close the installer.

", + "@tooltip" ) ); } } else @@ -104,7 +108,8 @@ FinishedPage::retranslate() { ui->mainText->setText( tr( "

Setup Failed


" "%1 has not been set up on your computer.
" - "The error message was: %2.", "@info, %1 is product name with version" ) + "The error message was: %2.", + "@info, %1 is product name with version" ) .arg( branding->versionedName() ) .arg( message ) ); } @@ -112,7 +117,8 @@ FinishedPage::retranslate() { ui->mainText->setText( tr( "

Installation Failed


" "%1 has not been installed on your computer.
" - "The error message was: %2.", "@info, %1 is product name with version" ) + "The error message was: %2.", + "@info, %1 is product name with version" ) .arg( branding->versionedName() ) .arg( message ) ); } From 9654f487ef28ca1e8436fd0d52017d915291cac2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:17 +0200 Subject: [PATCH 12/57] [fsresizer] Apply newer clang-formatting --- src/modules/fsresizer/ResizeFSJob.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/modules/fsresizer/ResizeFSJob.cpp b/src/modules/fsresizer/ResizeFSJob.cpp index e3f2fef30..7704e3241 100644 --- a/src/modules/fsresizer/ResizeFSJob.cpp +++ b/src/modules/fsresizer/ResizeFSJob.cpp @@ -166,8 +166,9 @@ ResizeFSJob::exec() if ( !m_kpmcore ) { cWarning() << "Could not load KPMCore backend (2)."; - return Calamares::JobResult::error( tr( "KPMCore not available", "@error" ), - tr( "Calamares cannot start KPMCore for the file system resize job.", "@error" ) ); + return Calamares::JobResult::error( + tr( "KPMCore not available", "@error" ), + tr( "Calamares cannot start KPMCore for the file system resize job.", "@error" ) ); } m_kpmcore.backend()->initFSSupport(); // Might not be enough, see below @@ -178,18 +179,20 @@ ResizeFSJob::exec() return Calamares::JobResult::error( tr( "Resize failed.", "@error" ), !m_fsname.isEmpty() - ? tr( "The filesystem %1 could not be found in this system, and cannot be resized.", "@info" ).arg( m_fsname ) - : tr( "The device %1 could not be found in this system, and cannot be resized.", "@info" ).arg( m_devicename ) ); + ? tr( "The filesystem %1 could not be found in this system, and cannot be resized.", "@info" ) + .arg( m_fsname ) + : tr( "The device %1 could not be found in this system, and cannot be resized.", "@info" ) + .arg( m_devicename ) ); } m.second->fileSystem().init(); // Initialize support for specific FS if ( !ResizeOperation::canGrow( m.second ) ) { cDebug() << "canGrow() returned false."; - return Calamares::JobResult::error( tr( "Resize Failed", "@error" ), - !m_fsname.isEmpty() - ? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname ) - : tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) ); + return Calamares::JobResult::error( + tr( "Resize Failed", "@error" ), + !m_fsname.isEmpty() ? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname ) + : tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) ); } qint64 new_end = findGrownEnd( m ); @@ -198,10 +201,10 @@ ResizeFSJob::exec() if ( new_end < 0 ) { - return Calamares::JobResult::error( tr( "Resize Failed", "@error" ), - !m_fsname.isEmpty() - ? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname ) - : tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) ); + return Calamares::JobResult::error( + tr( "Resize Failed", "@error" ), + !m_fsname.isEmpty() ? tr( "The filesystem %1 cannot be resized.", "@error" ).arg( m_fsname ) + : tr( "The device %1 cannot be resized.", "@error" ).arg( m_devicename ) ); } if ( new_end == 0 ) { From afd3ed86d97728822653bf2c7df5c942fccc9b66 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:18 +0200 Subject: [PATCH 13/57] [keyboard] Apply newer clang-formatting --- src/modules/keyboard/Config.cpp | 8 +++++--- src/modules/keyboard/SetKeyboardLayoutJob.cpp | 15 ++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index d8b1e8e86..ad6bee6f7 100644 --- a/src/modules/keyboard/Config.cpp +++ b/src/modules/keyboard/Config.cpp @@ -502,14 +502,16 @@ QString Config::prettyStatus() const { QString status; - status += tr( "Keyboard model has been set to %1
.", "@label, %1 is keyboard model, as in Apple Magic Keyboard" ) - .arg( m_keyboardModelsModel->label( m_keyboardModelsModel->currentIndex() ) ); + status + += tr( "Keyboard model has been set to %1
.", "@label, %1 is keyboard model, as in Apple Magic Keyboard" ) + .arg( m_keyboardModelsModel->label( m_keyboardModelsModel->currentIndex() ) ); QString layout = m_keyboardLayoutsModel->item( m_keyboardLayoutsModel->currentIndex() ).second.description; QString variant = m_keyboardVariantsModel->currentIndex() >= 0 ? m_keyboardVariantsModel->label( m_keyboardVariantsModel->currentIndex() ) : QString( "" ); - status += tr( "Keyboard layout has been set to %1/%2.", "@label, %1 is layout, %2 is layout variant" ).arg( layout, variant ); + status += tr( "Keyboard layout has been set to %1/%2.", "@label, %1 is layout, %2 is layout variant" ) + .arg( layout, variant ); return status; } diff --git a/src/modules/keyboard/SetKeyboardLayoutJob.cpp b/src/modules/keyboard/SetKeyboardLayoutJob.cpp index be2adbb77..beb5780a2 100644 --- a/src/modules/keyboard/SetKeyboardLayoutJob.cpp +++ b/src/modules/keyboard/SetKeyboardLayoutJob.cpp @@ -64,7 +64,9 @@ QString SetKeyboardLayoutJob::prettyName() const { return tr( "Setting keyboard model to %1, layout as %2-%3…", "@status, %1 model, %2 layout, %3 variant" ) - .arg( m_model ).arg( m_layout ).arg( m_variant ); + .arg( m_model ) + .arg( m_layout ) + .arg( m_variant ); } @@ -365,8 +367,10 @@ SetKeyboardLayoutJob::exec() if ( !writeVConsoleData( vconsoleConfPath, convertedKeymapPath ) ) { - return Calamares::JobResult::error( tr( "Failed to write keyboard configuration for the virtual console.", "@error" ), - tr( "Failed to write to %1", "@error, %1 is virtual console configuration path" ).arg( vconsoleConfPath ) ); + return Calamares::JobResult::error( + tr( "Failed to write keyboard configuration for the virtual console.", "@error" ), + tr( "Failed to write to %1", "@error, %1 is virtual console configuration path" ) + .arg( vconsoleConfPath ) ); } // Get the path to the destination's /etc/X11/xorg.conf.d/00-keyboard.conf @@ -391,8 +395,9 @@ SetKeyboardLayoutJob::exec() if ( !writeX11Data( keyboardConfPath ) ) { - return Calamares::JobResult::error( tr( "Failed to write keyboard configuration for X11.", "@error" ), - tr( "Failed to write to %1", "@error, %1 is keyboard configuration path" ).arg( keyboardConfPath ) ); + return Calamares::JobResult::error( + tr( "Failed to write keyboard configuration for X11.", "@error" ), + tr( "Failed to write to %1", "@error, %1 is keyboard configuration path" ).arg( keyboardConfPath ) ); } } From a6cfc79a92553b2062421dd3d45d3801a303b00f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:18 +0200 Subject: [PATCH 14/57] [license] Apply newer clang-formatting --- src/modules/license/LicensePage.cpp | 12 ++++++++---- src/modules/license/LicenseWidget.cpp | 21 ++++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index 185ed615d..b35c4e12f 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -147,9 +147,11 @@ LicensePage::retranslate() if ( !m_allLicensesOptional ) { ui->mainText->setText( tr( "This setup procedure will install proprietary " - "software that is subject to licensing terms.", "@info" ) + "software that is subject to licensing terms.", + "@info" ) + br + review ); - QString mustAcceptText( tr( "If you do not agree with the terms, the setup procedure cannot continue.", "@info" ) ); + QString mustAcceptText( + tr( "If you do not agree with the terms, the setup procedure cannot continue.", "@info" ) ); ui->acceptCheckBox->setToolTip( mustAcceptText ); } else @@ -157,10 +159,12 @@ LicensePage::retranslate() ui->mainText->setText( tr( "This setup procedure can install proprietary " "software that is subject to licensing terms " "in order to provide additional features and enhance the user " - "experience.", "@info" ) + "experience.", + "@info" ) + br + review ); QString okAcceptText( tr( "If you do not agree with the terms, proprietary software will not " - "be installed, and open source alternatives will be used instead.", "@info" ) ); + "be installed, and open source alternatives will be used instead.", + "@info" ) ); ui->acceptCheckBox->setToolTip( okAcceptText ); } ui->retranslateUi( this ); diff --git a/src/modules/license/LicenseWidget.cpp b/src/modules/license/LicenseWidget.cpp index 4fa59cfd7..8f6b65e50 100644 --- a/src/modules/license/LicenseWidget.cpp +++ b/src/modules/license/LicenseWidget.cpp @@ -107,38 +107,44 @@ LicenseWidget::retranslateUi() case LicenseEntry::Type::Driver: //: %1 is an untranslatable product name, example: Creative Audigy driver productDescription = tr( "%1 driver
" - "by %2", "@label, %1 is product name, %2 is product vendor" ) + "by %2", + "@label, %1 is product name, %2 is product vendor" ) .arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::GpuDriver: //: %1 is usually a vendor name, example: Nvidia graphics driver productDescription = tr( "%1 graphics driver
" - "by %2", "@label, %1 is product name, %2 is product vendor" ) + "by %2", + "@label, %1 is product name, %2 is product vendor" ) .arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::BrowserPlugin: productDescription = tr( "%1 browser plugin
" - "by %2", "@label, %1 is product name, %2 is product vendor" ) + "by %2", + "@label, %1 is product name, %2 is product vendor" ) .arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::Codec: productDescription = tr( "%1 codec
" - "by %2", "@label, %1 is product name, %2 is product vendor" ) + "by %2", + "@label, %1 is product name, %2 is product vendor" ) .arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::Package: productDescription = tr( "%1 package
" - "by %2", "@label, %1 is product name, %2 is product vendor" ) + "by %2", + "@label, %1 is product name, %2 is product vendor" ) .arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyVendor ); break; case LicenseEntry::Type::Software: productDescription = tr( "%1
" - "by %2", "@label, %1 is product name, %2 is product vendor" ) + "by %2", + "@label, %1 is product name, %2 is product vendor" ) .arg( m_entry.m_prettyName ) .arg( m_entry.m_prettyVendor ); } @@ -183,7 +189,8 @@ LicenseWidget::updateExpandToolTip() { if ( m_entry.isLocal() ) { - m_viewLicenseButton->setText( m_isExpanded ? tr( "Hide the license text", "@tooltip" ) : tr( "Show the license text", "@tooltip" ) ); + m_viewLicenseButton->setText( m_isExpanded ? tr( "Hide the license text", "@tooltip" ) + : tr( "Show the license text", "@tooltip" ) ); } else { From 5f293fb40b98d513bb80894c44214f6c9a735c6c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:18 +0200 Subject: [PATCH 15/57] [locale] Apply newer clang-formatting --- src/modules/locale/LCLocaleDialog.cpp | 5 +++-- src/modules/locale/SetTimezoneJob.cpp | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/modules/locale/LCLocaleDialog.cpp b/src/modules/locale/LCLocaleDialog.cpp index 4079d79b0..a1660e0ca 100644 --- a/src/modules/locale/LCLocaleDialog.cpp +++ b/src/modules/locale/LCLocaleDialog.cpp @@ -29,7 +29,8 @@ LCLocaleDialog::LCLocaleDialog( const QString& guessedLCLocale, const QStringLis upperText->setWordWrap( true ); upperText->setText( tr( "The system locale setting affects the language and character " "set for some command line user interface elements.
" - "The current setting is %1.", "@info" ) + "The current setting is %1.", + "@info" ) .arg( guessedLCLocale ) ); mainLayout->addWidget( upperText ); setMinimumWidth( upperText->fontMetrics().height() * 24 ); @@ -85,5 +86,5 @@ QString LCLocaleDialog::selectedLCLocale() { const auto items = m_localesWidget->selectedItems(); - return items.isEmpty() ? QString{} : items.first()->text(); + return items.isEmpty() ? QString {} : items.first()->text(); } diff --git a/src/modules/locale/SetTimezoneJob.cpp b/src/modules/locale/SetTimezoneJob.cpp index 1a3070a52..3d88bd02c 100644 --- a/src/modules/locale/SetTimezoneJob.cpp +++ b/src/modules/locale/SetTimezoneJob.cpp @@ -67,9 +67,10 @@ SetTimezoneJob::exec() int ec = Calamares::System::instance()->targetEnvCall( { "ln", "-s", zoneinfoPath, localtimeSlink } ); if ( ec ) { - return Calamares::JobResult::error( - tr( "Cannot set timezone.", "@error" ), - tr( "Link creation failed, target: %1; link name: %2", "@info" ).arg( zoneinfoPath ).arg( "/etc/localtime" ) ); + return Calamares::JobResult::error( tr( "Cannot set timezone.", "@error" ), + tr( "Link creation failed, target: %1; link name: %2", "@info" ) + .arg( zoneinfoPath ) + .arg( "/etc/localtime" ) ); } QFile timezoneFile( gs->value( "rootMountPoint" ).toString() + "/etc/timezone" ); From 011483967d9e2901e144c67fcc787b8960301901 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:19 +0200 Subject: [PATCH 16/57] [machineid] Apply newer clang-formatting --- src/modules/machineid/MachineIdJob.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/modules/machineid/MachineIdJob.cpp b/src/modules/machineid/MachineIdJob.cpp index 87ebb0e40..df1a52aff 100644 --- a/src/modules/machineid/MachineIdJob.cpp +++ b/src/modules/machineid/MachineIdJob.cpp @@ -101,10 +101,8 @@ MachineIdJob::exec() QObject::tr( "Directory not found" ), QObject::tr( "Could not create new random file
%1
." ).arg( entropy_file ) ); } - auto r = createEntropy( m_entropy_copy ? EntropyGeneration::CopyFromHost - : EntropyGeneration::New, - root, - entropy_file ); + auto r = createEntropy( + m_entropy_copy ? EntropyGeneration::CopyFromHost : EntropyGeneration::New, root, entropy_file ); if ( !r ) { return r; From 5bf787c1a521cafa4683f2cd00adcb7456b3d67e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:20 +0200 Subject: [PATCH 17/57] [packagechooser] Apply newer clang-formatting --- src/modules/packagechooser/ItemAppStream.cpp | 12 +++--------- src/modules/packagechooser/ItemAppStream.h | 6 +++--- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/modules/packagechooser/ItemAppStream.cpp b/src/modules/packagechooser/ItemAppStream.cpp index a3b6e248d..d45fd5b60 100644 --- a/src/modules/packagechooser/ItemAppStream.cpp +++ b/src/modules/packagechooser/ItemAppStream.cpp @@ -21,7 +21,7 @@ static inline quint64 sizeOrder( const QSize& size ) { - return static_cast(size.width()) * static_cast(size.height()); + return static_cast< quint64 >( size.width() ) * static_cast< quint64 >( size.height() ); } /// @brief Sets a screenshot in @p map from @p screenshot, if a usable one is found @@ -55,15 +55,9 @@ static PackageItem fromComponent( AppStream::Pool& pool, AppStream::Component& component ) { #if HAVE_APPSTREAM_VERSION == 0 - auto setActiveLocale = [&component](const QString & locale) - { - component.setActiveLocale( locale ); - }; + auto setActiveLocale = [ &component ]( const QString& locale ) { component.setActiveLocale( locale ); }; #else - auto setActiveLocale = [&pool](const QString & locale) - { - pool.setLocale( locale ); - }; + auto setActiveLocale = [ &pool ]( const QString& locale ) { pool.setLocale( locale ); }; #endif QVariantMap map; diff --git a/src/modules/packagechooser/ItemAppStream.h b/src/modules/packagechooser/ItemAppStream.h index a087a56dc..6b05e2f4a 100644 --- a/src/modules/packagechooser/ItemAppStream.h +++ b/src/modules/packagechooser/ItemAppStream.h @@ -28,9 +28,9 @@ #define HAVE_APPSTREAM_HEADERS AppStreamQt #endif -#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/pool.h CALAMARES_GT -#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/image.h CALAMARES_GT -#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/screenshot.h CALAMARES_GT +#include CALAMARES_LT HAVE_APPSTREAM_HEADERS / pool.h CALAMARES_GT +#include CALAMARES_LT HAVE_APPSTREAM_HEADERS / image.h CALAMARES_GT +#include CALAMARES_LT HAVE_APPSTREAM_HEADERS / screenshot.h CALAMARES_GT #undef CALAMARES_LT #undef CALAMARES_GT From 92a5d07ed7aabdfcd5fcc4013cda4dca5c69f537 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:21 +0200 Subject: [PATCH 18/57] [partition] Apply newer clang-formatting --- src/modules/partition/gui/ChoicePage.cpp | 12 ++++++++---- src/modules/partition/gui/EncryptWidget.cpp | 3 ++- src/modules/partition/gui/ScanningDialog.cpp | 3 ++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 8a1313237..5cddfe798 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1057,7 +1057,8 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice ) Q_UNUSED( path ) sizeLabel->setText( tr( "%1 will be shrunk to %2MiB and a new " - "%3MiB partition will be created for %4.", "@info, %1 is partition name, %4 is product name" ) + "%3MiB partition will be created for %4.", + "@info, %1 is partition name, %4 is product name" ) .arg( m_beforePartitionBarsView->selectionModel()->currentIndex().data().toString() ) .arg( Calamares::BytesToMiB( size ) ) .arg( Calamares::BytesToMiB( sizeNext ) ) @@ -1188,14 +1189,16 @@ ChoicePage::setupEfiSystemPartitionSelector() { m_efiLabel->setText( tr( "An EFI system partition cannot be found anywhere " "on this system. Please go back and use manual " - "partitioning to set up %1.", "@info, %1 is product name" ) + "partitioning to set up %1.", + "@info, %1 is product name" ) .arg( Calamares::Branding::instance()->shortProductName() ) ); updateNextEnabled(); } else if ( efiSystemPartitions.count() == 1 ) //probably most usual situation { m_efiLabel->setText( tr( "The EFI system partition at %1 will be used for " - "starting %2.", "@info, %1 is partition path, %2 is product name" ) + "starting %2.", + "@info, %1 is partition path, %2 is product name" ) .arg( efiSystemPartitions.first()->partitionPath() ) .arg( Calamares::Branding::instance()->shortProductName() ) ); } @@ -1505,7 +1508,8 @@ ChoicePage::setupActions() { if ( atLeastOneIsMounted ) { - m_messageLabel->setText( tr( "This storage device has one of its partitions mounted.", "@info" ) ); + m_messageLabel->setText( + tr( "This storage device has one of its partitions mounted.", "@info" ) ); } else { diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 176a7c610..73a6b6f8b 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -155,7 +155,8 @@ EncryptWidget::updateState( const bool notify ) else if ( m_filesystem == FileSystem::Zfs && p1.length() < ZFS_MIN_LENGTH ) { applyPixmap( m_ui->m_iconLabel, Calamares::StatusError ); - m_ui->m_iconLabel->setToolTip( tr( "Password must be a minimum of %1 characters.", "@tooltip" ).arg( ZFS_MIN_LENGTH ) ); + m_ui->m_iconLabel->setToolTip( + tr( "Password must be a minimum of %1 characters.", "@tooltip" ).arg( ZFS_MIN_LENGTH ) ); } else if ( p1 == p2 ) { diff --git a/src/modules/partition/gui/ScanningDialog.cpp b/src/modules/partition/gui/ScanningDialog.cpp index 8418d8ec8..ce8de22dc 100644 --- a/src/modules/partition/gui/ScanningDialog.cpp +++ b/src/modules/partition/gui/ScanningDialog.cpp @@ -65,7 +65,8 @@ ScanningDialog::run( const QFuture< void >& future, void ScanningDialog::run( const QFuture< void >& future, const std::function< void() >& callback, QWidget* parent ) { - ScanningDialog::run( future, tr( "Scanning storage devices…", "@status" ), tr( "Partitioning…", "@status" ), callback, parent ); + ScanningDialog::run( + future, tr( "Scanning storage devices…", "@status" ), tr( "Partitioning…", "@status" ), callback, parent ); } void From 00ac9a6cee022ee48f07945891afe8defeefe303 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 10:55:24 +0200 Subject: [PATCH 19/57] [welcome] Apply newer clang-formatting --- src/modules/welcome/WelcomePage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index 5689bb2b1..30e3d6b21 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -209,7 +209,8 @@ WelcomePage::retranslate() ui->mainText->setText( message.arg( Calamares::Branding::instance()->versionedName() ) ); ui->retranslateUi( this ); - ui->supportButton->setText( tr( "%1 Support", "@action" ).arg( Calamares::Branding::instance()->shortProductName() ) ); + ui->supportButton->setText( + tr( "%1 Support", "@action" ).arg( Calamares::Branding::instance()->shortProductName() ) ); } void From 19aa96fe54066995a5e8cb69a42709497713701d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 17 Apr 2024 11:08:39 +0200 Subject: [PATCH 20/57] [packagechooser] Repair build This was broken by clang-format, so mark this weird unformattable block as don't format. --- src/modules/packagechooser/ItemAppStream.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/modules/packagechooser/ItemAppStream.h b/src/modules/packagechooser/ItemAppStream.h index 6b05e2f4a..8e946afd9 100644 --- a/src/modules/packagechooser/ItemAppStream.h +++ b/src/modules/packagechooser/ItemAppStream.h @@ -28,9 +28,11 @@ #define HAVE_APPSTREAM_HEADERS AppStreamQt #endif -#include CALAMARES_LT HAVE_APPSTREAM_HEADERS / pool.h CALAMARES_GT -#include CALAMARES_LT HAVE_APPSTREAM_HEADERS / image.h CALAMARES_GT -#include CALAMARES_LT HAVE_APPSTREAM_HEADERS / screenshot.h CALAMARES_GT +// clang-format off +#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/pool.h CALAMARES_GT +#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/image.h CALAMARES_GT +#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/screenshot.h CALAMARES_GT +// clang-format on #undef CALAMARES_LT #undef CALAMARES_GT From a7e86e8aff33f769017f4980b8727bed17303533 Mon Sep 17 00:00:00 2001 From: "Eugene San (eugenesan)" Date: Thu, 11 Apr 2024 19:52:38 -0700 Subject: [PATCH 21/57] Make sure we do not use missing crypto_keyfile in fstab module Replaces original commit with refactoring Refactoring will have to wait --- src/modules/fstab/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/fstab/main.py b/src/modules/fstab/main.py index 78cae6349..bd7ae77c3 100755 --- a/src/modules/fstab/main.py +++ b/src/modules/fstab/main.py @@ -151,8 +151,12 @@ class FstabGenerator(object): if not mapper_name or not luks_uuid: return None - password = "/crypto_keyfile.bin" crypttab_options = self.crypttab_options + # Make sure to not use missing keyfile + if os.path.isfile(os.path.join(self.root_mount_point, "crypto_keyfile.bin")): + password = "/crypto_keyfile.bin" + else: + password = "none" # Set crypttab password for partition to none and remove crypttab options # if root partition was not encrypted From cf9837f48c453f870ab8530bf3f0b1fcab01ccea Mon Sep 17 00:00:00 2001 From: dalto Date: Mon, 22 Apr 2024 15:47:28 -0500 Subject: [PATCH 22/57] [partition] Don't crash is when going back without selecting a partition --- src/modules/partition/gui/ChoicePage.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 5cddfe798..4ff9b772b 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -679,7 +679,11 @@ ChoicePage::onLeave() { if ( m_config->installChoice() == InstallChoice::Alongside ) { - doAlongsideApply(); + if ( m_afterPartitionSplitterWidget->splitPartitionSize() >= 0 + && m_afterPartitionSplitterWidget->newPartitionSize() >= 0 ) + { + doAlongsideApply(); + } } if ( m_isEfi From cae7b9e868acc4a9ffa08a3b1e944b10800b48ec Mon Sep 17 00:00:00 2001 From: Sohrab Behdani Date: Sat, 27 Apr 2024 10:46:41 +0330 Subject: [PATCH 23/57] Added additional keyboard layout for Persian --- src/modules/keyboard/non-ascii-layouts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/keyboard/non-ascii-layouts b/src/modules/keyboard/non-ascii-layouts index ef2e42787..c54c88193 100644 --- a/src/modules/keyboard/non-ascii-layouts +++ b/src/modules/keyboard/non-ascii-layouts @@ -9,3 +9,4 @@ ua us - ua-utf gr us - gr he us - he ar us - ar +fa us - fa From 246aa3e2176e34e6d6cacaca8c8c290155a1703c Mon Sep 17 00:00:00 2001 From: Sohrab Behdani Date: Sat, 27 Apr 2024 12:47:40 +0330 Subject: [PATCH 24/57] Fixed Persian Keyboard problem after installing --- src/modules/keyboard/non-ascii-layouts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/keyboard/non-ascii-layouts b/src/modules/keyboard/non-ascii-layouts index c54c88193..db76bb61e 100644 --- a/src/modules/keyboard/non-ascii-layouts +++ b/src/modules/keyboard/non-ascii-layouts @@ -9,4 +9,4 @@ ua us - ua-utf gr us - gr he us - he ar us - ar -fa us - fa +ir us - fa From f8c6d2c48741813ce9085861b4116c86376a6e3e Mon Sep 17 00:00:00 2001 From: Ivan Borzenkov Date: Sat, 27 Apr 2024 14:23:01 +0300 Subject: [PATCH 25/57] add layouts from xkb/ruses/base $nonlatin --- src/modules/keyboard/non-ascii-layouts | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/modules/keyboard/non-ascii-layouts b/src/modules/keyboard/non-ascii-layouts index ef2e42787..21c5704f6 100644 --- a/src/modules/keyboard/non-ascii-layouts +++ b/src/modules/keyboard/non-ascii-layouts @@ -9,3 +9,41 @@ ua us - ua-utf gr us - gr he us - he ar us - ar +ir us - fa + +af us - af +am us - am +ara us - ara +bd us - bd +bg us - bg +bt us - bt +by us - by +eg us - eg +et us - et +ge us - ge +gn us - gn +id us - id +il us - il +in us - in +jp us - jp +jv us - jv +kg us - kg +kh us - kh +kr us - kr +kz us - kz +la us - la +lk us - lk +ma us - ma +me us - me +mk us - mk +mm us - mm +mn us - mn +mv us - mv +my us - my +pk us - pk +rs us - rs +sy us - sy +th us - th +tj us - tj +tz us - tz +uz us - uz From 5a90e0bc6a0d43fa4c98a2f2834d553dd74dd52c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 14:37:19 +0200 Subject: [PATCH 26/57] [users] Remove stray ; --- src/modules/users/ActiveDirectoryJob.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/users/ActiveDirectoryJob.cpp b/src/modules/users/ActiveDirectoryJob.cpp index deb4c82d7..97a9f3cf7 100644 --- a/src/modules/users/ActiveDirectoryJob.cpp +++ b/src/modules/users/ActiveDirectoryJob.cpp @@ -51,7 +51,6 @@ ActiveDirectoryJob::exec() if ( !m_ip.isEmpty() ) { const QString hostsFilePath = Calamares::System::instance()->targetPath( QStringLiteral( "/etc/hosts" ) ); - ; QFile hostsFile( hostsFilePath ); if ( hostsFile.open( QIODevice::Append | QIODevice::Text ) ) { From 8c66a558d5f188863b14cc7c34d6a51a6e7ce4bc Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 14:38:14 +0200 Subject: [PATCH 27/57] [welcome] Use different color-name The QColorConstants are deprecated, use other names instead (this avoids a compile warning from clang against Qt5). --- src/modules/welcome/checker/ResultDelegate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/welcome/checker/ResultDelegate.cpp b/src/modules/welcome/checker/ResultDelegate.cpp index 060febbb5..19f906a0d 100644 --- a/src/modules/welcome/checker/ResultDelegate.cpp +++ b/src/modules/welcome/checker/ResultDelegate.cpp @@ -35,7 +35,7 @@ paintRequirement( QPainter* painter, const QStyleOptionViewItem& option, const Q Calamares::ImageType statusImage = Calamares::StatusOk; - painter->setPen( QColorConstants::Black ); + painter->setPen( Qt::black ); if ( index.data( Calamares::RequirementsModel::Satisfied ).toBool() ) { painter->fillRect( textRect, option.palette.window().color() ); From 6dc83fb277dc70608b54aee5843cf0b58e417a15 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 14:48:10 +0200 Subject: [PATCH 28/57] [libcalamares] Deal with Qt5/6 differences in count() --- src/libcalamares/modulesystem/RequirementsModel.cpp | 2 +- src/libcalamares/modulesystem/RequirementsModel.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/modulesystem/RequirementsModel.cpp b/src/libcalamares/modulesystem/RequirementsModel.cpp index 3ad98ae88..4b44d62a4 100644 --- a/src/libcalamares/modulesystem/RequirementsModel.cpp +++ b/src/libcalamares/modulesystem/RequirementsModel.cpp @@ -66,7 +66,7 @@ RequirementsModel::reCheckList() int RequirementsModel::rowCount( const QModelIndex& ) const { - return m_requirements.count(); + return static_cast< int >( m_requirements.count() ); // TODO 3.4 use qsizetype } QVariant diff --git a/src/libcalamares/modulesystem/RequirementsModel.h b/src/libcalamares/modulesystem/RequirementsModel.h index bd71ce81f..e6cd06854 100644 --- a/src/libcalamares/modulesystem/RequirementsModel.h +++ b/src/libcalamares/modulesystem/RequirementsModel.h @@ -61,8 +61,8 @@ public: QVariant data( const QModelIndex& index, int role ) const override; - int rowCount( const QModelIndex& ) const override; - int count() const { return m_requirements.count(); } + int rowCount( const QModelIndex& ) const override; // TODO 3.4 use qsizetype + int count() const { return static_cast< int >( m_requirements.count() ); } // TODO 3.4 use qsizetype ///@brief Debugging tool, describe the checking-state void describe() const; From 35990d9a6bd51300633e7dc18ca589d9edbb7a48 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 15:11:24 +0200 Subject: [PATCH 29/57] [libcalamares] Massage size types to avoid conversion warning --- src/libcalamares/compat/Size.h | 23 +++++++++++++++++++ .../modulesystem/RequirementsChecker.cpp | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/libcalamares/compat/Size.h diff --git a/src/libcalamares/compat/Size.h b/src/libcalamares/compat/Size.h new file mode 100644 index 000000000..5e217e4cb --- /dev/null +++ b/src/libcalamares/compat/Size.h @@ -0,0 +1,23 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2024 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + * + */ +#ifndef CALAMARES_COMPAT_SIZE_H +#define CALAMARES_COMPAT_SIZE_H + +#include + +namespace Calamares +{ +/* Compatibility of size types (e.g. qsizetype, STL sizes, int) between Qt5 and Qt6 */ + +using NumberForTr = int; + +} + +#endif diff --git a/src/libcalamares/modulesystem/RequirementsChecker.cpp b/src/libcalamares/modulesystem/RequirementsChecker.cpp index 1eb85113d..25930b942 100644 --- a/src/libcalamares/modulesystem/RequirementsChecker.cpp +++ b/src/libcalamares/modulesystem/RequirementsChecker.cpp @@ -11,6 +11,7 @@ #include "RequirementsChecker.h" #include "compat/Mutex.h" +#include "compat/Size.h" #include "modulesystem/Module.h" #include "modulesystem/Requirement.h" #include "modulesystem/RequirementsModel.h" @@ -120,7 +121,7 @@ RequirementsChecker::reportProgress() { cDebug() << "Remaining modules:" << remaining << Logger::DebugList( remainingNames ); unsigned int posInterval = ( m_progressTimer->interval() < 0 ) ? 1000 : uint( m_progressTimer->interval() ); - QString waiting = tr( "Waiting for %n module(s)…", "@status", remaining ); + QString waiting = tr( "Waiting for %n module(s)…", "@status", static_cast(remaining) ); QString elapsed = tr( "(%n second(s))", "@status", m_progressTimeouts * posInterval / 999 ); Q_EMIT requirementsProgress( waiting + QString( " " ) + elapsed ); } From 93094948fa78dc894fa5bc48b34d3feab5b2f879 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 15:22:35 +0200 Subject: [PATCH 30/57] [partition] Actually remove invalid fstab entries --- src/modules/partition/core/PartUtils.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index e233403b4..2b6fdbbea 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -262,8 +262,9 @@ lookForFstabEntries( const QString& partitionPath ) } fstabFile.close(); const int lineCount = fstabEntries.count(); - std::remove_if( + const auto invalidEntries = std::remove_if( fstabEntries.begin(), fstabEntries.end(), []( const FstabEntry& x ) { return !x.isValid(); } ); + fstabEntries.erase(invalidEntries); cDebug() << Logger::SubEntry << "got" << fstabEntries.count() << "fstab entries from" << lineCount << "lines in" << fstabFile.fileName(); } From bdbeadcd65393c205f1ce50154cf5ba6edd5cc19 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 16:59:25 +0200 Subject: [PATCH 31/57] [partition] Move fstab-handling This was declared in osprober, but implemented elsewhere. Move it to the "right" source file, add tests. While here, repair the listing of fstab entries (invalid entries were not stripped). --- src/modules/partition/CMakeLists.txt | 1 + src/modules/partition/core/OsproberEntry.cpp | 63 ++++++++++++++++++++ src/modules/partition/core/OsproberEntry.h | 15 ++++- src/modules/partition/core/PartUtils.cpp | 53 +++------------- src/modules/partition/tests/CMakeLists.txt | 12 ++-- src/modules/partition/tests/ConfigTests.cpp | 47 +++++++++++++++ 6 files changed, 140 insertions(+), 51 deletions(-) create mode 100644 src/modules/partition/core/OsproberEntry.cpp diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 5a92e713e..3af8e4465 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -60,6 +60,7 @@ if(KPMcore_FOUND) core/DeviceList.cpp core/DeviceModel.cpp core/KPMHelpers.cpp + core/OsproberEntry.cpp core/PartitionActions.cpp core/PartitionCoreModule.cpp core/PartitionInfo.cpp diff --git a/src/modules/partition/core/OsproberEntry.cpp b/src/modules/partition/core/OsproberEntry.cpp new file mode 100644 index 000000000..4a59f7d07 --- /dev/null +++ b/src/modules/partition/core/OsproberEntry.cpp @@ -0,0 +1,63 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac + * SPDX-FileCopyrightText: 2018-2019, 2024 Adriaan de Groot + * SPDX-FileCopyrightText: 2019 Collabora Ltd + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + */ + +#include "OsproberEntry.h" + + +bool +FstabEntry::isValid() const +{ + return !partitionNode.isEmpty() && !mountPoint.isEmpty() && !fsType.isEmpty(); +} + +FstabEntry +FstabEntry::fromEtcFstab( const QString& rawLine ) +{ + QString line = rawLine.simplified(); + if ( line.startsWith( '#' ) ) + { + return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 }; + } + + QStringList splitLine = line.split( ' ' ); + if ( splitLine.length() != 6 ) + { + return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 }; + } + + return FstabEntry { + splitLine.at( 0 ), // path, or UUID, or LABEL, etc. + splitLine.at( 1 ), // mount point + splitLine.at( 2 ), // fs type + splitLine.at( 3 ), // options + splitLine.at( 4 ).toInt(), //dump + splitLine.at( 5 ).toInt() //pass + }; +} + +namespace Calamares +{ +FstabEntryList +fromEtcFstabContents( const QStringList& fstabLines ) +{ + FstabEntryList fstabEntries; + + for ( const QString& rawLine : fstabLines ) + { + fstabEntries.append( FstabEntry::fromEtcFstab( rawLine ) ); + } + const auto invalidEntries = std::remove_if( + fstabEntries.begin(), fstabEntries.end(), []( const FstabEntry& x ) { return !x.isValid(); } ); + fstabEntries.erase( invalidEntries, fstabEntries.end() ); + return fstabEntries; +} + +} // namespace Calamares diff --git a/src/modules/partition/core/OsproberEntry.h b/src/modules/partition/core/OsproberEntry.h index 86b7691b8..0db7c9a51 100644 --- a/src/modules/partition/core/OsproberEntry.h +++ b/src/modules/partition/core/OsproberEntry.h @@ -32,11 +32,24 @@ struct FstabEntry * If the string isn't valid (e.g. comment-line, or broken * fstab entry) then the entry that is returned is invalid. */ - static FstabEntry fromEtcFstab( const QString& ); // implemented in Partutils.cpp + static FstabEntry fromEtcFstab( const QString& ); }; typedef QList< FstabEntry > FstabEntryList; +namespace Calamares +{ +/** @brief Returns valid entries from the lines of a fstab file */ +FstabEntryList fromEtcFstabContents( const QStringList& fstabLines ); + +/** @brief Returns valid entries from the byte-contents of a fstab file */ +inline FstabEntryList +fromEtcFstabContents( const QByteArray& contents ) +{ + return fromEtcFstabContents( QString::fromLocal8Bit( contents ).split( '\n' ) ); +} +} // namespace Calamares + struct OsproberEntry { QString prettyName; diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 2b6fdbbea..9818ea71f 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -254,31 +254,25 @@ lookForFstabEntries( const QString& partitionPath ) if ( fstabFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - const QStringList fstabLines = QString::fromLocal8Bit( fstabFile.readAll() ).split( '\n' ); - - for ( const QString& rawLine : fstabLines ) - { - fstabEntries.append( FstabEntry::fromEtcFstab( rawLine ) ); - } + const auto fstabLines = QString::fromLocal8Bit( fstabFile.readAll() ).split( '\n' ); fstabFile.close(); - const int lineCount = fstabEntries.count(); - const auto invalidEntries = std::remove_if( - fstabEntries.begin(), fstabEntries.end(), []( const FstabEntry& x ) { return !x.isValid(); } ); - fstabEntries.erase(invalidEntries); - cDebug() << Logger::SubEntry << "got" << fstabEntries.count() << "fstab entries from" << lineCount + + const auto fstabEntries = Calamares::fromEtcFstabContents( fstabLines ); + cDebug() << Logger::SubEntry << "got" << fstabEntries.count() << "fstab entries from" << fstabLines.count() << "lines in" << fstabFile.fileName(); + return fstabEntries; } else { cWarning() << "Could not read fstab from mounted fs"; + return {}; } } else { cWarning() << "Could not mount existing fs"; + return {}; } - - return fstabEntries; } static QString @@ -642,36 +636,3 @@ canonicalFilesystemName( const QString& fsName, FileSystem::Type* fsType ) } } // namespace PartUtils - -/* Implementation of methods for FstabEntry, from OsproberEntry.h */ - -bool -FstabEntry::isValid() const -{ - return !partitionNode.isEmpty() && !mountPoint.isEmpty() && !fsType.isEmpty(); -} - -FstabEntry -FstabEntry::fromEtcFstab( const QString& rawLine ) -{ - QString line = rawLine.simplified(); - if ( line.startsWith( '#' ) ) - { - return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 }; - } - - QStringList splitLine = line.split( ' ' ); - if ( splitLine.length() != 6 ) - { - return FstabEntry { QString(), QString(), QString(), QString(), 0, 0 }; - } - - return FstabEntry { - splitLine.at( 0 ), // path, or UUID, or LABEL, etc. - splitLine.at( 1 ), // mount point - splitLine.at( 2 ), // fs type - splitLine.at( 3 ), // options - splitLine.at( 4 ).toInt(), //dump - splitLine.at( 5 ).toInt() //pass - }; -} diff --git a/src/modules/partition/tests/CMakeLists.txt b/src/modules/partition/tests/CMakeLists.txt index 1cb4ff7a1..3418859c4 100644 --- a/src/modules/partition/tests/CMakeLists.txt +++ b/src/modules/partition/tests/CMakeLists.txt @@ -14,6 +14,12 @@ include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) +set(PartitionModule_basic_SRC + ${PartitionModule_SOURCE_DIR}/core/OsproberEntry.cpp + ${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp + ${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp + ) + calamares_add_test( partitionjobtest SOURCES @@ -40,10 +46,9 @@ calamares_add_test( partitioncreatelayoutstest SOURCES CreateLayoutsTests.cpp + ${PartitionModule_basic_SRC} ${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp - ${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp ${PartitionModule_SOURCE_DIR}/core/PartitionLayout.cpp - ${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp ${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp LIBRARIES calamares::kpmcore Calamares::calamaresui DEFINITIONS ${_partition_defs} @@ -66,9 +71,8 @@ calamares_add_test( partitionconfigtest SOURCES ConfigTests.cpp + ${PartitionModule_basic_SRC} ${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp - ${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp - ${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp ${PartitionModule_SOURCE_DIR}/Config.cpp LIBRARIES calamares::kpmcore Calamares::calamaresui DEFINITIONS diff --git a/src/modules/partition/tests/ConfigTests.cpp b/src/modules/partition/tests/ConfigTests.cpp index eae912f71..0e030d57e 100644 --- a/src/modules/partition/tests/ConfigTests.cpp +++ b/src/modules/partition/tests/ConfigTests.cpp @@ -9,6 +9,7 @@ #include "Config.h" +#include "core/OsproberEntry.h" #include "core/PartUtils.h" #include "GlobalStorage.h" @@ -17,6 +18,7 @@ #include "utils/System.h" #include "utils/Yaml.h" +#include #include #include @@ -35,6 +37,9 @@ private Q_SLOTS: void testLegacySize(); void testAll(); void testWeirdConfig(); + + void testNormalFstab(); + void testWeirdFstab(); }; ConfigTests::ConfigTests() = default; @@ -222,6 +227,48 @@ ConfigTests::testWeirdConfig() } } +void +ConfigTests::testNormalFstab() +{ + const auto contents + = QByteArrayLiteral( "# A FreeBSD fstab\n" + "/dev/nvd0p3 none swap sw 0 0\n" ); + const auto entries = Calamares::fromEtcFstabContents( contents ); + for ( const auto& e : entries ) + { + QVERIFY( e.isValid() ); + } + QCOMPARE( entries.count(), 1 ); +} + +void +ConfigTests::testWeirdFstab() +{ + const auto contents + = QByteArrayLiteral( "# \n" + "UUID=dae80d0a-f6c7-46f4-a04a-6761f2cfd9b6 / ext4 defaults,noatime 0 1\n" + "UUID=423892d5-a929-41a9-a846-f410cf3fe25b swap swap defaults,noatime 0 2\n" + "# another comment\n" + "borked 2\n" + "ok /dev1 ext4 none 0 0\n" + "bogus /dev2 ext4 none no later\n" + "# comment\n" ); + const auto entries = Calamares::fromEtcFstabContents( contents ); + QCOMPARE( entries.count(), 4 ); + + QStringList mountPoints; + for ( const auto& e : entries ) + { + mountPoints.append( e.mountPoint ); + } + mountPoints.sort(); + QCOMPARE( mountPoints, + QStringList() << "/" + << "/dev1" + << "/dev2" + << "swap" ); +} + QTEST_GUILESS_MAIN( ConfigTests ) From d6c6b7c64becb21dc66b5a04679e78a1b08e4d4a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 17:36:27 +0200 Subject: [PATCH 32/57] [libcalamares] Remove the commented-out sponsor info --- src/libcalamares/CalamaresAbout.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/libcalamares/CalamaresAbout.cpp b/src/libcalamares/CalamaresAbout.cpp index 31389c679..9ecf48547 100644 --- a/src/libcalamares/CalamaresAbout.cpp +++ b/src/libcalamares/CalamaresAbout.cpp @@ -22,15 +22,6 @@ static const char s_footer[] "and the Calamares " "translators team." ); -#if 0 -// Blue Systems sponsored until June 2022 -static const char s_sponsor[] = QT_TRANSLATE_NOOP( "AboutData", - "Calamares " - "development is sponsored by
" - "Blue Systems - " - "Liberating Software." ); -#endif - struct Maintainer { unsigned int start; From 4c8e91dc702ab792885ae130fb1a8686dacbc112 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 17:38:35 +0200 Subject: [PATCH 33/57] [libcalamares] Simplify collecting the maintainers info --- src/libcalamares/CalamaresAbout.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libcalamares/CalamaresAbout.cpp b/src/libcalamares/CalamaresAbout.cpp index 9ecf48547..4ff44356d 100644 --- a/src/libcalamares/CalamaresAbout.cpp +++ b/src/libcalamares/CalamaresAbout.cpp @@ -48,14 +48,12 @@ static constexpr const Maintainer maintainers[] = { static QString aboutMaintainers() { - return std::accumulate( std::cbegin( maintainers ), - std::cend( maintainers ), - QString(), - []( QString& s, const Maintainer& m ) - { - s += m.text(); - return s; - } ); + QStringList s; + for ( const auto& m : maintainers ) + { + s.append( m.text() ); + } + return s.join( QString() ); } static QString From 4440bf3bfc2d8d4fd99fdf0241c18051d298c62c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 17:45:51 +0200 Subject: [PATCH 34/57] [partition] Simplify collecting partition descriptions --- src/modules/partition/PartitionViewStep.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/PartitionViewStep.cpp b/src/modules/partition/PartitionViewStep.cpp index 119bf1baa..db087b59d 100644 --- a/src/modules/partition/PartitionViewStep.cpp +++ b/src/modules/partition/PartitionViewStep.cpp @@ -223,9 +223,15 @@ PartitionViewStep::prettyStatus() const const QList< PartitionCoreModule::SummaryInfo > list = m_core->createSummaryInfo(); cDebug() << "Summary for Partition" << list.length() << choice; - auto joinDiskInfo = [ choice ]( QString& s, const PartitionCoreModule::SummaryInfo& i ) - { return s + diskDescription( 1, i, choice ); }; - const QString diskInfoLabel = std::accumulate( list.begin(), list.end(), QString(), joinDiskInfo ); + const QString diskInfoLabel = [ &choice, &list ]() + { + QStringList s; + for ( const auto& i : list ) + { + s.append( diskDescription( 1, i, choice ) ); + } + return s.join( QString() ); + }(); const QString jobsLabel = jobDescriptions( jobs() ).join( QStringLiteral( "
" ) ); return diskInfoLabel + "
" + jobsLabel; } From 366552f74314673ebccaeaa10d7883d11eb432c2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 17:49:23 +0200 Subject: [PATCH 35/57] Changes: update contributors See #2323 ; Vladislav pointed out the incompatibility but I implemented something different from the PR. --- CHANGES-3.3 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index a355f90af..daaa7bc2f 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -10,11 +10,16 @@ the history of the 3.2 series (2018-05 - 2022-08). # 3.3.7 (unreleased) This release contains contributions from (alphabetically by first name): - - Nobody, yet + - Adriaan de Groot + - Vladislav Nepogodin ## Core ## + - Updated clang-formatting + - Some C++20 future-proofing (thanks Vladislav) ## Modules ## + - *partition* module did not filter out invalid fstab entries; + they were not written, either, so no net change. # 3.3.6 (2024-04-16) From fd37beae8b9abc1dee1979cd1f848b8f039904a3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 20:42:24 +0200 Subject: [PATCH 36/57] Changes: update contributors --- CHANGES-3.3 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index daaa7bc2f..4b0ed61b8 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -11,6 +11,7 @@ the history of the 3.2 series (2018-05 - 2022-08). This release contains contributions from (alphabetically by first name): - Adriaan de Groot + - Vincent Penvern - Vladislav Nepogodin ## Core ## @@ -20,6 +21,8 @@ This release contains contributions from (alphabetically by first name): ## Modules ## - *partition* module did not filter out invalid fstab entries; they were not written, either, so no net change. + - *partition* module now has a configurable default check-state + for the encryption checkbox. (thanks Vincent) # 3.3.6 (2024-04-16) From e6e46f1ebd26efdfd9fce04e4f0e162f5136c215 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 23:07:56 +0200 Subject: [PATCH 37/57] [partition] Polishing, formatting --- src/modules/partition/Config.h | 8 ++++---- src/modules/partition/gui/ChoicePage.cpp | 7 ++++--- src/modules/partition/gui/EncryptWidget.cpp | 6 ++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/modules/partition/Config.h b/src/modules/partition/Config.h index 199ddaf88..8ec139169 100644 --- a/src/modules/partition/Config.h +++ b/src/modules/partition/Config.h @@ -148,10 +148,10 @@ public: /// @brief Is manual partitioning allowed (not explicitly disabled in the config file)? bool allowManualPartitioning() const { return m_allowManualPartitioning; } - /** @brief pre check encryption checkbox. - * - * parameter is used if enableLuksAutomatedPartitioning is true. - * Default value is false + /** @brief Pre-check encryption checkbox. + * + * This is meaningful only if enableLuksAutomatedPartitioning is @c true. + * Default value is @c false */ bool preCheckEncryption() const { return m_preCheckEncryption; } diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 1d77fd75d..62cf0f6e1 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1584,9 +1584,10 @@ ChoicePage::calculateNextEnabled() const } } - if ( m_config->installChoice() != InstallChoice::Manual - && (m_encryptWidget->isVisible() || - m_encryptWidget->isEncryptionCheckboxChecked())) + // You can have an invisible encryption checkbox, which is + // still checked -- then do the encryption. + if ( m_config->installChoice() != InstallChoice::Manual + && ( m_encryptWidget->isVisible() || m_encryptWidget->isEncryptionCheckboxChecked() ) ) { switch ( m_encryptWidget->state() ) { diff --git a/src/modules/partition/gui/EncryptWidget.cpp b/src/modules/partition/gui/EncryptWidget.cpp index 013018d25..8726df147 100644 --- a/src/modules/partition/gui/EncryptWidget.cpp +++ b/src/modules/partition/gui/EncryptWidget.cpp @@ -70,12 +70,14 @@ EncryptWidget::EncryptWidget( QWidget* parent ) CALAMARES_RETRANSLATE_SLOT( &EncryptWidget::retranslate ); } -bool EncryptWidget::isEncryptionCheckboxChecked() +bool +EncryptWidget::isEncryptionCheckboxChecked() { return m_ui->m_encryptCheckBox->isChecked(); } -void EncryptWidget::setEncryptionCheckbox( bool preCheckEncrypt) +void +EncryptWidget::setEncryptionCheckbox( bool preCheckEncrypt ) { m_ui->m_encryptCheckBox->setChecked( preCheckEncrypt ); } From d6897d6c36b62c8e4a0d9878feefd79a32863875 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 23:11:52 +0200 Subject: [PATCH 38/57] Changes: update contributors --- CHANGES-3.3 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index 4b0ed61b8..48435a0b4 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -11,6 +11,8 @@ the history of the 3.2 series (2018-05 - 2022-08). This release contains contributions from (alphabetically by first name): - Adriaan de Groot + - Eugene San + - Evan James - Vincent Penvern - Vladislav Nepogodin @@ -19,6 +21,8 @@ This release contains contributions from (alphabetically by first name): - Some C++20 future-proofing (thanks Vladislav) ## Modules ## + - *fstab* module does not add an encryption keyfile if it does + not exist. (thanks Eugene) - *partition* module did not filter out invalid fstab entries; they were not written, either, so no net change. - *partition* module now has a configurable default check-state @@ -30,7 +34,7 @@ This release contains contributions from (alphabetically by first name): This release contains contributions from (alphabetically by first name): - Adriaan de Groot - Anke Boersma - - Eugene Sam + - Eugene San - Evan James - Harald Sitter - Mike Stemle From 66e028862fc24c8d2943f5fe84ffe5e1d7c5d969 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 28 Apr 2024 23:20:36 +0200 Subject: [PATCH 39/57] Changes: update contributors --- CHANGES-3.3 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index 48435a0b4..147379955 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -13,6 +13,8 @@ This release contains contributions from (alphabetically by first name): - Adriaan de Groot - Eugene San - Evan James + - Ivan Borzenkov + - Sohrab Behdani - Vincent Penvern - Vladislav Nepogodin @@ -23,6 +25,8 @@ This release contains contributions from (alphabetically by first name): ## Modules ## - *fstab* module does not add an encryption keyfile if it does not exist. (thanks Eugene) + - *keyboard* module handles Persian (fa) layout better. (thanks Sohrab) + - *keyboard* module handles other non-ascii layout better. (thanks Ivan) - *partition* module did not filter out invalid fstab entries; they were not written, either, so no net change. - *partition* module now has a configurable default check-state From fb6f3a5f3966105d0ee632a3259f9ffaed4a0db0 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 1 May 2024 00:08:23 +0200 Subject: [PATCH 40/57] i18n: [calamares] Automatic merge of Transifex translations --- lang/calamares_as.ts | 6 +- lang/calamares_fi_FI.ts | 36 ++-- lang/calamares_he.ts | 46 ++--- lang/calamares_ia.ts | 100 +++++----- lang/calamares_ja.ts | 12 +- lang/calamares_pt_BR.ts | 404 ++++++++++++++++++++-------------------- lang/calamares_zh_CN.ts | 38 ++-- 7 files changed, 323 insertions(+), 319 deletions(-) diff --git a/lang/calamares_as.ts b/lang/calamares_as.ts index b8212daed..4b3bbbd4b 100644 --- a/lang/calamares_as.ts +++ b/lang/calamares_as.ts @@ -31,7 +31,7 @@ Managing auto-mount settings… @status - + অটো-মাউন্ট ছেটিংছ ব্যৱস্থাপনা কৰা হৈছে... @@ -158,13 +158,13 @@ Send Session Log - + চেচন লগ পঠাওক Debug Information @title - + ডিবাগ তথ্য diff --git a/lang/calamares_fi_FI.ts b/lang/calamares_fi_FI.ts index 664e59c93..71eb7c4df 100644 --- a/lang/calamares_fi_FI.ts +++ b/lang/calamares_fi_FI.ts @@ -1166,7 +1166,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä. Performing contextual processes' job… @status - Suoritetaan kontekstuaaliset prosessit… + Suoritetaan prosessit… @@ -3627,7 +3627,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ The installer failed to remove a volume group named '%1'. - Asennusoihjelma ei onnistunut poistamaan taltioryhmää '%1'. + Asennusoihjelma ei voinut poistaa taltioryhmää "%1". @@ -3665,7 +3665,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ The file-system resize job has an invalid configuration and will not run. @error - Tiedostojärjestelmän koon muutto ei kelpaa eikä sitä suoriteta. + Tiedostojärjestelmän koonmuutostyön määritys on virheellinen, eikä sitä suoriteta. @@ -3677,25 +3677,25 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Calamares cannot start KPMCore for the file system resize job. @error - Calamares ei voi käynnistää KPMCorea tiedostojärjestelmän koon muuttamiseksi. + Calamares ei voi käynnistää KPMCorea tiedostojärjestelmän koonmuutostyölle. Resize failed. @error - Koon muuttaminen epäonnistui. + Kokoa ei voitu muuttaa. The filesystem %1 could not be found in this system, and cannot be resized. @info - Tiedostojärjestelmää %1 ei löydy tästä järjestelmästä, eikä sen kokoa voi muuttaa. + Tiedostojärjestelmää %1 ei löydy, eikä sen kokoa voi muuttaa. The device %1 could not be found in this system, and cannot be resized. @info - Laitetta %1 ei löydy tästä järjestelmästä, eikä sen kokoa voi muuttaa. + Laitetta %1 ei löydy, eikä sen kokoa voi muuttaa. @@ -3704,7 +3704,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Resize Failed @error - Kokomuutos epäonnistui + Kokoa ei voitu muuttaa @@ -3774,7 +3774,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Resize volume group named %1 from %2 to %3 @title - Muuta tilavuusryhmän %1 kokoa %2:sta %3:ksi + Muuta taltioryhmän %1 kokoa %2:sta %3:ksi @@ -3791,7 +3791,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ The installer failed to resize a volume group named '%1'. - Asennusohjelma ei onnistunut muuttamaan taltioryhmän "%1" kokoa. + Asennusohjelma ei voinut muuttaa taltioryhmän "%1" kokoa. @@ -4116,7 +4116,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Running shell processes… @status - Suoritetaan shell prosesseja… + Suoritetaan shell prosessit… @@ -4410,12 +4410,12 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Select application and system language - Valitse sovelluksen ja järjestelmän kieli + Valitse sovellusten ja järjestelmän kieli Open donations website - Avaa lahjoitussivusto + Avaa lahjoitukset verkkosivu @@ -4425,7 +4425,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Open help and support website - Avaa ohje- ja tukisivusto + Avaa ohje- ja tukisivu @@ -4435,7 +4435,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Open issues and bug-tracking website - Avaa ongelmia käsittelevä verkkosivusto + Avoimet ongelmat ja virheenseuranta verkkosivu @@ -4445,7 +4445,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Open release notes website - Avaa julkaisutietojen verkkosivusto + Avaa julkaisutiedot verkkosivu @@ -4526,7 +4526,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Failed to create dataset - Tietojoukon luominen epäonnistui + Epäonnistui dataset luominen @@ -4556,7 +4556,7 @@ Asennus voi jatkua, mutta jotkin toiminnot saattavat olla pois käytöstä.</ Show information about Calamares @tooltip - Näytä tietoa Calamaresista + Calamares tietoja diff --git a/lang/calamares_he.ts b/lang/calamares_he.ts index 80c613587..5f7c858ff 100644 --- a/lang/calamares_he.ts +++ b/lang/calamares_he.ts @@ -876,7 +876,7 @@ The installer will quit and all changes will be lost. Clearing mounts for partitioning operations on %1… @status - + מתבצעת מחיקה של נקודות עיגון לטובת פעולות חלוקה למחיצות על %1… @@ -1273,7 +1273,7 @@ The installer will quit and all changes will be lost. Create new %1MiB partition on %3 (%2) with entries %4 @title - + יצירת מחיצת %1MiB על גבי %3 (%2) עם הרשומות %4 @@ -1708,7 +1708,7 @@ The installer will quit and all changes will be lost. Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 @info - + הגדרת מחיצת %2 <strong>חדשה</strong> עם נקודת העיגון <strong>%1</strong> %3 @@ -1726,13 +1726,13 @@ The installer will quit and all changes will be lost. Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> @info - + הקמת מחיצת %3 בשם <strong>%1</strong> עם נקודת העגינה <strong>%2</strong> והיכולות <em>%4</em> Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… @info - + הקמת מחיצת %3 בשם <strong>%1</strong> עם נקודת העגינה <strong>%2</strong>%4… @@ -1815,13 +1815,13 @@ The installer will quit and all changes will be lost. Format partition %1 (file system: %2, size: %3 MiB) on %4 @title - + לאתחל את המחיצה %1 (מערכת קבצים: %2, גודל: %3 MiB) על גבי %4 Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> @info - + אתחול מחיצה בגודל <strong>%3MiB</strong> בנתיב <strong>%1</strong> עם מערכת הקבצים <strong>%2</strong> @@ -1833,7 +1833,7 @@ The installer will quit and all changes will be lost. Formatting partition %1 with file system %2… @status - + המחיצה %1 מפורמטת עם מערכת הקבצים %2… @@ -3259,13 +3259,13 @@ The installer will quit and all changes will be lost. Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) @info - + להתקין את %1 <strong>לצד</strong> מערכת הפעלה אחרת בכונן <strong>%2</strong> (%3) <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 @info - + <strong>למחוק</strong> את הכונן <strong>%2</strong> (%3) ולהתקין %1 @@ -3753,13 +3753,13 @@ Output: Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> @info - + שינוי גודל של מחיצה בגודל <strong>%2MiB</strong> בנתיב <strong>%1</strong> לכדי <strong>%3MiB</strong> Resizing %2MiB partition %1 to %3MiB… @status - + משתנה הגודל של מחיצה %1 בגודל %2MiB לכדי %3MiB… @@ -3782,7 +3782,7 @@ Output: Resize volume group named %1 from %2 to %3 @title - + שינוי גודל קבוצת כרכים בשם %1 מ־%2 ל־%3 @@ -3913,7 +3913,7 @@ Output: Set flags on %1MiB %2 partition @title - + הגדרת דגלונים על מחיצה מסוג %2 בגודל %1MiB @@ -3931,7 +3931,7 @@ Output: Clear flags on %1MiB <strong>%2</strong> partition @info - + להסיר דגלונים ממחיצת <strong>%2</strong> בגודל %1MiB @@ -3949,49 +3949,49 @@ Output: Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> @info - + הגדרת דגלונים על מחיצת <strong>%2</strong> בגודל %1MiB לכדי <strong>%3</strong> Set flags on new partition to <strong>%1</strong> @info - + הגדרת הדגלונים <strong>%1</strong> על המחיצה החדשה Clearing flags on partition <strong>%1</strong>… @status - + הדגלונים נמחקים מהמחיצה <strong>%1</strong>… Clearing flags on %1MiB <strong>%2</strong> partition… @status - + דגלונים מוסרים ממחיצת <strong>%2</strong> בגודל %1MiB… Clearing flags on new partition… @status - + הדגלונים נמחקים מהמחיצה החדשה… Setting flags <strong>%2</strong> on partition <strong>%1</strong>… @status - + הדגלונים <strong>%2</strong> מוגדרים על המחיצה <strong>%1</strong>… Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… @status - + הדגלונים <strong>%3</strong> על מחיצת <strong>%2</strong> בגודל %1MiB… Setting flags <strong>%1</strong> on new partition… @status - + הדגלונים <strong>%1</strong> מוגדרים על המחיצה החדשה… diff --git a/lang/calamares_ia.ts b/lang/calamares_ia.ts index c6e6cfa3e..8d6ad9619 100644 --- a/lang/calamares_ia.ts +++ b/lang/calamares_ia.ts @@ -39,7 +39,7 @@ The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode. - Le <strong>ambiente de initio</strong> de iste systema.<br><br>Systemas x86 plus vetere supporta solmente <strong>BIOS</strong>.<br>Systemas moderne usualmente usa <strong>EFI</strong>, ma pote etiam apparer como BIOS si il initia in modo de compatibilitate. + Le <strong>ambiente de initio</strong> de iste systema.<br><br>Systemas x86 plus vetere supporta solmente <strong>BIOS</strong>.<br>Systemas moderne usualmente usa <strong>EFI</strong>, ma pote anque apparer como BIOS si il initia in modo de compatibilitate. @@ -49,7 +49,7 @@ This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Iste systema esseva initiate con un ambiente de initio <strong>BIOS</strong>.<br><br>Pro configurar le initio ab un ambiente BIOS, iste installator debe installar un cargator de initio, como <strong>GRUB</strong>, o al comenciamento de un partition o sur le <strong>registro de initio principal</strong> presso le comenciamento del tabula de partitiones (preferite). Isto es automatic, a minus que tu selige partitionamento manual, in le qual caso tu debe configurar lo tu mesme. + Iste systema era initiate con un ambiente de initio <strong>BIOS</strong>.<br><br>Pro configurar le initio ab un ambiente BIOS, iste installator debe installar un cargator de initio, como <strong>GRUB</strong>, o al comenciamento de un partition o sur le <strong>registro de initio principal</strong> presso le comenciamento del tabula de partitiones (preferite). Isto es automatic, a minus que tu selige partitionamento manual, in le qual caso tu debe configurar lo tu mesme. @@ -118,7 +118,7 @@ none - nulle + necuno @@ -193,7 +193,7 @@ Job failed (%1) - Carga fallite (%1) + Labor fallite (%1) @@ -214,7 +214,7 @@ Example job (%1) - Carga de exemplo (%1) + Labor de exemplo (%1) @@ -495,7 +495,7 @@ Link copied to clipboard &Install Now @button - &Installar nunc + &Installar ora @@ -580,14 +580,14 @@ Link copied to clipboard Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. Vole tu vermente cancellar le processo de configuration actual? -Le programma de configuration claudera e tote le cambios essera perdite. +Le programma de configuration claudera e tote le cambiamentos sera perdite. Do you really want to cancel the current install process? The installer will quit and all changes will be lost. Vole tu vermente cancellar le processo de installation actual? -Le installator claudera e tote le cambios essera perdite. +Le installator claudera e tote le cambiamentos sera perdite. @@ -795,7 +795,7 @@ Le installator claudera e tote le cambios essera perdite. No swap @label - Nulle intercambio + Necun intercambio @@ -807,7 +807,7 @@ Le installator claudera e tote le cambios essera perdite. Swap (no Hibernate) @label - Intercambio (nulle hibernation) + Intercambio (necun hibernation) @@ -978,13 +978,13 @@ Le installator claudera e tote le cambios essera perdite. The system language will be set to %1. @info - Le lingua del systema essera definite a %1. + Le lingua del systema sera definite a %1. The numbers and dates locale will be set to %1. @info - Le numeros e datas regional essera definite a %1. + Le numeros e datas regional sera definite a %1. @@ -1039,7 +1039,7 @@ Le installator claudera e tote le cambios essera perdite. None - Nulle + Necuno @@ -1080,7 +1080,7 @@ Le installator claudera e tote le cambios essera perdite. Your hostname is too short. - Tu nomine de hospite es troppo breve. + Tu nomine de hospite es troppo curte. @@ -1130,7 +1130,7 @@ Le installator claudera e tote le cambios essera perdite. This program will ask you some questions and set up %2 on your computer. - Iste programma te demandara alicun questiones e configurara %2 sur tu computator. + Iste programma te demandara alcun questiones e configurara %2 sur tu computator. @@ -1477,7 +1477,7 @@ Le installator claudera e tote le cambios essera perdite. <br><br>This partition table type is only advisable on older systems which start from a <strong>BIOS</strong> boot environment. GPT is recommended in most other cases.<br><br><strong>Warning:</strong> the MBR partition table is an obsolete MS-DOS era standard.<br>Only 4 <em>primary</em> partitions may be created, and of those 4, one can be an <em>extended</em> partition, which may in turn contain many <em>logical</em> partitions. - <br><br>Iste typo de tabula de partitiones es solmente consiliabile pro systemas plus vetere que initia ab un ambiente de initio <strong>BIOS</strong>. GPT es recommendate in le major parte de altere casos.<br><br><strong>Advertimento:</strong> le tabula de partitiones MBR es un standard obsolete del era MS-DOS. <br>Solmente 4 partitiones <em>primari</em> pote esser create, e de cellos 4, un pote esser un partition <em>extendite</em>, que a su vice pote continer multe partitiones <em>logic</em>. + <br><br>Iste typo de tabula de partitiones es solmente consiliabile pro systemas plus vetere que initia ab un ambiente de initio <strong>BIOS</strong>. GPT es recommendate in le major parte de altere casos.<br><br><strong>Aviso:</strong> le tabula de partitiones MBR es un standard obsolete del era MS-DOS. <br>Solmente 4 partitiones <em>primari</em> pote esser create, e de issos 4, un pote esser un partition <em>extendite</em>, que a su vice pote continer multe partitiones <em>logic</em>. @@ -1538,7 +1538,7 @@ Le installator claudera e tote le cambios essera perdite. Failed to open %1 @error - + Impossibile aperir %1 @@ -1575,7 +1575,7 @@ Le installator claudera e tote le cambios essera perdite. Warning: Formatting the partition will erase all existing data. - Advertimento: Formatar le partition radera tote le datos existente. + Aviso: Formatar le partition radera tote le datos existente. @@ -1746,13 +1746,13 @@ Le installator claudera e tote le cambios essera perdite. &Restart now - &Reinitiar nunc + &Reinitiar ora <h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system. @info - <h1>Tote facite.</h1><br/>%1 ha essite configurate in tu computator.<br/>Tu pote nunc initiar usante tu nove systema. + <h1>Tote facite.</h1><br/>%1 ha essite configurate in tu computator.<br/>Tu pote ora initiar usante tu nove systema. @@ -1764,7 +1764,7 @@ Le installator claudera e tote le cambios essera perdite. <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. @info - <h1>Tote facite.</h1><br/>%1 ha essite installate in tu computator.<br/>Tu pote nunc reinitiar in tu nove systema, o continuar usante le ambiente in vivo de %2. + <h1>Tote facite.</h1><br/>%1 ha essite installate in tu computator.<br/>Tu pote ora reinitiar in tu nove systema, o continuar usante le ambiente in vivo de %2. @@ -2077,7 +2077,7 @@ Le installator claudera e tote le cambios essera perdite. The system locale setting affects the language and character set for some command line user interface elements.<br/>The current setting is <strong>%1</strong>. @info - Le parametros regional del systema affecta le lingua e le collection de characteres pro alicun elementos del interfacie de usator del linea de commando.<br/>Le parametro actual es <strong>%1</strong>. + Le parametros regional del systema affecta le lingua e le collection de characteres pro alcun elementos del interfacie de usator del linea de commando.<br/>Le parametro actual es <strong>%1</strong>. @@ -2107,7 +2107,7 @@ Le installator claudera e tote le cambios essera perdite. No rootMountPoint is set. - Nulle puncto de montage es definite. + Necun puncto de montage es definite. @@ -2298,7 +2298,7 @@ Le installator claudera e tote le cambios essera perdite. No partitions are defined. - Nulle partitiones es definite. + Necun partitiones es definite. @@ -2309,7 +2309,7 @@ Le installator claudera e tote le cambios essera perdite. Root partition %1 is LUKS but no passphrase has been set. - Le partition radice %1 es LUKS ma nulle phrase de contrasigno esseva definite. + Le partition radice %1 es LUKS ma necun phrase de contrasigno era definite. @@ -2423,7 +2423,7 @@ Le installator claudera e tote le cambios essera perdite. Kernel label for netinstall module, Linux kernel - + Nucleo @@ -3135,7 +3135,7 @@ Le installator claudera e tote le cambios essera perdite. &Revert All Changes - &Reverter tote le cambiamentos + &Reverter tote le modificationes @@ -3195,7 +3195,7 @@ Le installator claudera e tote le cambios essera perdite. The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead. - Le tabula de partitiones sur %1 jam ha %2 partitiones primari, e non pote esser addite alteres. Remove un partition primari e adde un partition extendite, in vice. + Le tabula de partitiones sur %1 ja ha %2 partitiones primari, e non pote esser addite alteres. Remove un partition primari e adde un partition extendite, in vice. @@ -3279,7 +3279,7 @@ Le installator claudera e tote le cambios essera perdite. No partitions will be changed. - Nulle partitiones essera cambiate. + Necun partitiones sera modificate. @@ -3372,7 +3372,7 @@ Le installator claudera e tote le cambios essera perdite. A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - Un partition de initio separate esseva configurate insimul con un partition de radice cryptate, ma le partition de initio non es cryptate.<br/><br/>Il ha problemas de securitate con iste typo de configuration, perque le files importante del systema es mantenite sur un partition non cryptate.<br/>Tu pote continuar si tu vole, ma le disblocar del systema de files occurrera plus tarde durante le initio del systema.<br/>Pro cryptar le partition de initio, retorna e recrea lo, seligente <strong>Cryptar</strong> in le fenestra de creation de partitiones. + Un partition de initio separate era configurate insimul con un partition de radice cryptate, ma le partition de initio non es cryptate.<br/><br/>Il ha problemas de securitate con iste typo de configuration, perque le files importante del systema es mantenite sur un partition non cryptate.<br/>Tu pote continuar si tu vole, ma le disblocar del systema de files occurrera plus tarde durante le initio del systema.<br/>Pro cryptar le partition de initio, retorna e recrea lo, seligente <strong>Cryptar</strong> in le fenestra de creation de partitiones. @@ -3567,7 +3567,7 @@ Output: (no mount point) - (nulle puncto de montage) + (necun puncto de montage) @@ -3661,7 +3661,7 @@ Output: Calamares cannot start KPMCore for the file system resize job. @error - Calamares non pote initiar KPMCore pro le carga de redimensionamento del systema de files. + Calamares non pote initiar KPMCore pro le labor de redimensionamento del systema de files. @@ -3844,37 +3844,37 @@ Output: Failed to write keyboard configuration for the virtual console. @error - + Impossibile scriber le configuration del claviero pro le consola virtual. Failed to write to %1 @error, %1 is virtual console configuration path - + Impossibile scriber a %1 Failed to write keyboard configuration for X11. @error - + Impossibile scriber le configuration del claviero pro X11. Failed to write to %1 @error, %1 is keyboard configuration path - + Impossibile scriber a %1 Failed to write keyboard configuration to existing /etc/default directory. @error - Non poteva scriber le configuration del claviero al directorio /etc/default existente. + Impossibile scriber le configuration del claviero al directorio /etc/default existente. Failed to write to %1 @error, %1 is default keyboard path - + Impossibile scriber a %1 @@ -4288,7 +4288,7 @@ Output: No rootMountPoint is set. - Nulle puncto de montage es definite. + Necun puncto de montage es definite. @@ -4484,7 +4484,7 @@ Output: Failed to create zpool on - + Impossibile crear “zpool” sur @@ -4494,7 +4494,7 @@ Output: No partitions are available for ZFS. - Nulle partitiones es disponibile pro ZFS. + Necun partitiones es disponibile pro ZFS. @@ -4505,12 +4505,12 @@ Output: Failed to create zpool - + Impossibile crear “zpool” Failed to create dataset - + Impossibile crear “dataset” @@ -4567,7 +4567,7 @@ Output: %1 has been installed on your computer.<br/> You may now restart into your new system, or continue using the Live environment. %1 ha essite installate in tu computator.<br/> - Tu pote nunc reinitiar in tu nove systema, o continuar usante le ambiente in vivo. + Tu pote ora reinitiar in tu nove systema, o continuar usante le ambiente in vivo. @@ -4600,7 +4600,7 @@ Output: You may now restart into your new system, or continue using the Live environment. @info, %1 is the product name %1 ha essite installate in tu computator.<br/> - Tu pote nunc reinitiar in tu nove systema, o continuar usante le ambiente in vivo. + Tu pote ora reinitiar in tu nove systema, o continuar usante le ambiente in vivo. @@ -4636,7 +4636,7 @@ Output: You may now restart your device. @info, %1 is the product name %1 ha essite installate in tu computator.<br/> - Tu pote nunc reinitiar tu dispositivo. + Tu pote ora reinitiar tu dispositivo. @@ -4732,7 +4732,7 @@ Output: The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. @info <h3>Linguas</h3> </br> - Le parametro regional del systema affecta le lingua e le collection de characteres pro alicun elementos del interfacie de usator del linea de commando. Le parametro actual es <strong>%1</strong>. + Le parametro regional del systema affecta le lingua e le collection de characteres pro alcun elementos del interfacie de usator del linea de commando. Le parametro actual es <strong>%1</strong>. @@ -4757,7 +4757,7 @@ Output: The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. @info <h3>Linguas</h3> </br> - Le parametro regional del systema affecta le lingua e le collection de characteres pro alicun elementos del interfacie de usator del linea de commando. Le parametro actual es <strong>%1</strong>. + Le parametro regional del systema affecta le lingua e le collection de characteres pro alcun elementos del interfacie de usator del linea de commando. Le parametro actual es <strong>%1</strong>. @@ -5160,7 +5160,7 @@ Output: <h3>Welcome to the %1 <quote>%2</quote> installer</h3> <p>This program will ask you some questions and set up %1 on your computer.</p> <h3>Benvenite al installator de <quote>%2</quote> pro %1</h3> - <p>Iste programma te demandara alicun questiones e configurara %1 sur tu computator.</p> + <p>Iste programma te demandara alcun questiones e configurara %1 sur tu computator.</p> @@ -5190,7 +5190,7 @@ Output: <h3>Welcome to the %1 <quote>%2</quote> installer</h3> <p>This program will ask you some questions and set up %1 on your computer.</p> <h3>Benvenite al installator de <quote>%2</quote> pro %1</h3> - <p>Iste programma te demandara alicun questiones e configurara %1 sur tu computator.</p> + <p>Iste programma te demandara alcun questiones e configurara %1 sur tu computator.</p> diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 9fefe6a24..0c4154df8 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -963,19 +963,19 @@ The installer will quit and all changes will be lost. Keyboard model has been set to %1<br/>. @label, %1 is keyboard model, as in Apple Magic Keyboard - キーボードのモデルは %1<br/> に設定されました。 + キーボードのモデルを %1 に設定する。<br/> Keyboard layout has been set to %1/%2. @label, %1 is layout, %2 is layout variant - キーボードレイアウトは %1/%2 に設定されました。 + キーボードのレイアウトを %1/%2 に設定する。 Set timezone to %1/%2 @action - タイムゾーンを %1/%2 に設定 + タイムゾーンを %1/%2 に設定する @@ -3014,7 +3014,7 @@ The installer will quit and all changes will be lost. Use the same password for the administrator account. - 管理者アカウントと同じパスワードを使用する。 + 管理者アカウントにも同じパスワードを使用する。 @@ -5014,7 +5014,7 @@ Output: Use the same password for the administrator account. - 管理者アカウントと同じパスワードを使用する。 + 管理者アカウントにも同じパスワードを使用する。 @@ -5147,7 +5147,7 @@ Output: Use the same password for the administrator account. - 管理者アカウントと同じパスワードを使用する。 + 管理者アカウントにも同じパスワードを使用する。 diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 00ba5b045..a7d2c63c0 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -11,12 +11,12 @@ Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://app.transifex.com/calamares/calamares/">Calamares translators team</a>. - + Obrigado ao <a href="https://calamares.io/team/">time Calamares</a> e ao <a href="https://app.transifex.com/calamares/calamares/">time de tradutores do Calamares</a>. <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. - + O desenvolvimento do <a href="https://calamares.io/">Calamares</a> é patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. @@ -31,7 +31,7 @@ Managing auto-mount settings… @status - + Gerenciando configurações de auto-montagem… @@ -128,12 +128,12 @@ Crashes Calamares, so that Dr. Konqi can look at it. - + Trava o Calamares para que o Dr. Konqi possa analisá-lo. Reloads the stylesheet from the branding directory. - Recarrega a folha de estilo do diretório de marca. + Recarrega a folha de estilo da pasta de marca. @@ -164,7 +164,7 @@ Debug Information @title - + Informação de Depuração @@ -179,7 +179,7 @@ Set Up @label - + Configurar @@ -223,13 +223,13 @@ Running command %1 in target system… @status - + Executando o comando %1 no sistema de destino… Running command %1… @status - + Executando comando %1… @@ -242,12 +242,12 @@ Bad working directory path - Caminho de diretório de trabalho ruim + O caminho da pasta de trabalho está errado Working directory %1 for python job %2 is not readable. - Diretório de trabalho %1 para a tarefa do python %2 não é legível. + A pasta de trabalho %1 para a tarefa do python %2 não é legível. @@ -267,33 +267,33 @@ Bad internal script - + Script interno quebrado Internal script for python job %1 raised an exception. - + O script interno para a tarefa do python %1 gerou uma exceção. Main script file %1 for python job %2 could not be loaded because it raised an exception. - + O arquivo de script %1 para a tarefa do python %2 não pôde ser carregado porque gerou uma exceção. Main script file %1 for python job %2 raised an exception. - + O arquivo de script principal %1 para a tarefa do python %2 gerou uma exceção. Main script file %1 for python job %2 returned invalid results. - + O arquivo de script principal %1 para a tarefa do python %2 retornou resultados inválidos. Main script file %1 for python job %2 does not contain a run() function. - + O arquivo de script principal %1 para a tarefa do python %2 não contêm uma função run(). @@ -302,19 +302,19 @@ Running %1 operation… @status - + Executando operação %1… Bad working directory path @error - Caminho de diretório de trabalho ruim + O caminho da pasta de trabalho está errado Working directory %1 for python job %2 is not readable. @error - Diretório de trabalho %1 para a tarefa do python %2 não é legível. + A pasta de trabalho %1 para a tarefa do python %2 não é legível. @@ -332,7 +332,7 @@ Boost.Python error in job "%1" @error - + Erro na tarefa "%1" do Boost.Python @@ -341,13 +341,13 @@ Loading… @status - + Carregando… QML step <i>%1</i>. @label - + Passo QML <i>%1</i>. @@ -368,10 +368,10 @@ Waiting for %n module(s)… @status - - - - + + Esperando por %n módulo… + Esperando por %n módulos… + Esperando por %n módulo(s)… @@ -471,13 +471,13 @@ Link copiado para a área de transferência Continue with Setup? @title - + Continuar com a Configuração? Continue with Installation? @title - + Continuar com a Instalação? @@ -489,31 +489,31 @@ Link copiado para a área de transferência The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 is short product name, %2 is short product name with version - + O instalador %1 está prestes a fazer mudanças no seu disco de modo a instalar o %2.<br/><strong>Você não será capaz de desfazer essas mudanças.</strong> &Set Up Now @button - + &Configurar Agora &Install Now @button - + &Instalar Agora Go &Back @button - + &Voltar &Set Up @button - + &Configurar @@ -537,13 +537,13 @@ Link copiado para a área de transferência Cancel the setup process without changing the system. @tooltip - + Cancelar o processo de configuração sem modificar o sistema. Cancel the installation process without changing the system. @tooltip - + Cancelar o processo de instalação sem modificar o sistema. @@ -573,13 +573,13 @@ Link copiado para a área de transferência Cancel Setup? @title - + Cancelar a Configuração? Cancel Installation? @title - + Cancelar a Instalação? @@ -608,19 +608,19 @@ O instalador será fechado e todas as alterações serão perdidas. Unparseable Python error @error - + Erro inanalisável do Python Unparseable Python traceback @error - + Rastreamento inanalisável do Python Unfetchable Python error @error - + Erro inalcançável do Python @@ -642,19 +642,19 @@ O instalador será fechado e todas as alterações serão perdidas. Set filesystem label on %1 @title - + Definir marcador para o sistema de arquivos em %1 Set filesystem label <strong>%1</strong> to partition <strong>%2</strong> @info - + Definir marcador para o sistema de arquivos <strong>%1</strong> na partição <strong>%2</strong> Setting filesystem label <strong>%1</strong> to partition <strong>%2</strong>… @status - + Definindo marcador para o sistema de arquivos <strong>%1</strong> na partição <strong>%2</strong>… @@ -699,7 +699,7 @@ O instalador será fechado e todas as alterações serão perdidas. Reuse %1 as home partition for %2 @label - + Reutilizar %1 como partição home para %2 @@ -801,13 +801,13 @@ O instalador será fechado e todas as alterações serão perdidas. No swap @label - + Sem swap Reuse swap @label - + Reutilizar swap @@ -836,7 +836,7 @@ O instalador será fechado e todas as alterações serão perdidas. Bootloader location: @label - + Local do gerenciador de inicialização: @@ -876,7 +876,7 @@ O instalador será fechado e todas as alterações serão perdidas. Clearing mounts for partitioning operations on %1… @status - + Limpando montagens para operações de particionamento em %1… @@ -891,7 +891,7 @@ O instalador será fechado e todas as alterações serão perdidas. Clearing all temporary mounts… @status - + Limpando todas as montagens temporárias… @@ -966,13 +966,13 @@ O instalador será fechado e todas as alterações serão perdidas. Keyboard model has been set to %1<br/>. @label, %1 is keyboard model, as in Apple Magic Keyboard - + O modelo de teclado foi definido como %1<br/>. Keyboard layout has been set to %1/%2. @label, %1 is layout, %2 is layout variant - + O leiaute de teclado foi definido como %1/%2. @@ -1165,7 +1165,7 @@ O instalador será fechado e todas as alterações serão perdidas. Performing contextual processes' job… @status - + Executando tarefa de processos contextuais… @@ -1273,44 +1273,44 @@ O instalador será fechado e todas as alterações serão perdidas. Create new %1MiB partition on %3 (%2) with entries %4 @title - + Criar nova partição de %1MiB em %3 (%2) com entradas %4 Create new %1MiB partition on %3 (%2) @title - + Criar nova partição de %1MiB em %3 (%2) Create new %2MiB partition on %4 (%3) with file system %1 @title - + Criar nova partição de %2MiB em %4 (%3) com sistema de arquivos %1 Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) with entries <em>%4</em> @info - + Criar nova partição de <strong>%1MiB</strong> em <strong>%3</strong> (%2) com entradas <em>%4</em> Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2) @info - + Criar nova partição de <strong>%1MiB</strong> em <strong>%3</strong> (%2) Create new <strong>%2MiB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong> @info - + Criar nova partição de <strong>%2MiB</strong> em <strong>%4</strong> (%3) com sistema de arquivos <strong>%1</strong> Creating new %1 partition on %2… @status - + Criando nova partição %1 em %2… @@ -1354,13 +1354,13 @@ O instalador será fechado e todas as alterações serão perdidas. Creating new %1 partition table on %2… @status - + Criando nova tabela de partições %1 em %2… Creating new <strong>%1</strong> partition table on <strong>%2</strong> (%3)… @status - + Criando nova tabela de partições <strong>%1</strong> em <strong>%2</strong> (%3)… @@ -1378,20 +1378,20 @@ O instalador será fechado e todas as alterações serão perdidas. Create user <strong>%1</strong> - + Criar usuário <strong>%1</strong> Creating user %1… @status - + Criando usuário %1… Preserving home directory… @status - + Preservando pasta home… @@ -1403,7 +1403,7 @@ O instalador será fechado e todas as alterações serão perdidas. Setting file permissions… @status - + Definindo permissões de arquivos… @@ -1422,18 +1422,18 @@ O instalador será fechado e todas as alterações serão perdidas. Creating new volume group named %1… @status - + Criando novo grupo de volumes chamado %1… Creating new volume group named <strong>%1</strong>… @status - + Criando novo grupo de volumes chamado <strong>%1</strong>… The installer failed to create a volume group named '%1'. - O instalador não conseguiu criar um grupo de volumes nomeado '%1'. + O instalador não conseguiu criar um grupo de volumes chamado '%1'. @@ -1443,18 +1443,18 @@ O instalador será fechado e todas as alterações serão perdidas. Deactivating volume group named %1… @status - + Desativando grupo de volumes chamado %1… Deactivating volume group named <strong>%1</strong>… @status - + Desativando grupo de volumes chamado <strong>%1</strong>… The installer failed to deactivate a volume group named %1. - O instalador não conseguiu desativar um grupo de volumes nomeado '%1'. + O instalador não conseguiu desativar um grupo de volumes chamado '%1'. @@ -1464,13 +1464,13 @@ O instalador será fechado e todas as alterações serão perdidas. Deleting partition %1… @status - + Excluindo partição %1… Deleting partition <strong>%1</strong>… @status - + Excluindo partição <strong>%1</strong>… @@ -1532,13 +1532,13 @@ O instalador será fechado e todas as alterações serão perdidas. Writing LUKS configuration for Dracut to %1… @status - + Escrevendo configuração LUKS para o Dracut em %1… Skipping writing LUKS configuration for Dracut: "/" partition is not encrypted @info - + Pulando escrita de configuração LUKS para o Dracut: a partição "/" não está criptografada @@ -1553,7 +1553,7 @@ O instalador será fechado e todas as alterações serão perdidas. Performing dummy C++ job… @status - + Executando tarefa C++ fictícia… @@ -1662,7 +1662,7 @@ O instalador será fechado e todas as alterações serão perdidas. Password must be a minimum of %1 characters. @tooltip - + A senha deve ter ao menos %1 caracteres. @@ -1696,55 +1696,55 @@ O instalador será fechado e todas as alterações serão perdidas. Install %1 on <strong>new</strong> %2 system partition @info - + Instalar %1 em <strong>nova</strong> partição %2 do sistema Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong> and features <em>%3</em> @info - + Configurar <strong>nova</strong> partição %2 com ponto de montagem <strong>%1</strong> e recursos <em>%3</em> Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3 @info - + Configurar <strong>nova</strong> partição %2 com ponto de montagem <strong>%1</strong>%3 Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em> @info - + Instalar %2 em partição do sistema %3 <strong>%1</strong> com recursos <em>%4</em> Install %2 on %3 system partition <strong>%1</strong> @info - + Instalar %2 na partição %3 do sistema <strong>%1</strong> Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong> and features <em>%4</em> @info - + Configurar partição %3 <strong>%1</strong> com ponto de montagem <strong>%2</strong> e recursos <em>%4</em> Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4… @info - + Configurar partição %3 <strong>%1</strong> com ponto de montagem <strong>%2</strong>%4… Install boot loader on <strong>%1</strong>… @info - + Instalar gerenciador de inicialização em <strong>%1</strong>… Setting up mount points… @status - + Configurando pontos de montagem… @@ -1815,13 +1815,13 @@ O instalador será fechado e todas as alterações serão perdidas. Format partition %1 (file system: %2, size: %3 MiB) on %4 @title - + Formatar partição %1 (sistema de arquivos: %2, tamanho: %3 MiB) em %4 Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong> @info - + Formatar partição <strong>%1</strong> de <strong>%3MiB</strong> com o sistema de arquivos <strong>%2</strong> @@ -1833,7 +1833,7 @@ O instalador será fechado e todas as alterações serão perdidas. Formatting partition %1 with file system %2… @status - + Formatando partição %1 com o sistema de arquivos %2… @@ -1976,7 +1976,7 @@ O instalador será fechado e todas as alterações serão perdidas. Collecting information about your machine… @status - + Coletando informações sobre o seu dispositivo… @@ -1992,7 +1992,7 @@ O instalador será fechado e todas as alterações serão perdidas. Could not create directories <code>%1</code>. - Não foi possível criar diretórios <code>%1</code>. + Não foi possível criar as pastas <code>%1</code>. @@ -2011,7 +2011,7 @@ O instalador será fechado e todas as alterações serão perdidas. Creating initramfs with mkinitcpio… @status - + Criando initramfs com mkinitcpio… @@ -2020,7 +2020,7 @@ O instalador será fechado e todas as alterações serão perdidas. Creating initramfs… @status - + Criando initramfs… @@ -2029,7 +2029,7 @@ O instalador será fechado e todas as alterações serão perdidas. Konsole not installed. @error - + Konsole não instalado. @@ -2077,7 +2077,7 @@ O instalador será fechado e todas as alterações serão perdidas. System Locale Setting @title - + Definição de localidade do Sistema @@ -2230,7 +2230,7 @@ O instalador será fechado e todas as alterações serão perdidas. Hide the license text @tooltip - + Esconder o texto de licença @@ -2242,7 +2242,7 @@ O instalador será fechado e todas as alterações serão perdidas. Open the license agreement in browser @tooltip - + Abrir os termos de licença no navegador @@ -2264,7 +2264,7 @@ O instalador será fechado e todas as alterações serão perdidas. &Change… @button - + &Modificar… @@ -2552,7 +2552,7 @@ O instalador será fechado e todas as alterações serão perdidas. Select your preferred region, or use the default settings @label - + Selecione sua região preferida, ou use as configurações padrão @@ -2566,7 +2566,7 @@ O instalador será fechado e todas as alterações serão perdidas. Select your preferred zone within your region @label - + Selecione sua zona preferida dentro da sua região @@ -2578,7 +2578,7 @@ O instalador será fechado e todas as alterações serão perdidas. You can fine-tune language and locale settings below @label - + Você pode ajustar as configurações de idioma e localidade abaixo @@ -2587,7 +2587,7 @@ O instalador será fechado e todas as alterações serão perdidas. Select your preferred region, or use the default settings @label - + Selecione sua região preferida, ou use as configurações padrão @@ -2601,7 +2601,7 @@ O instalador será fechado e todas as alterações serão perdidas. Select your preferred zone within your region @label - + Selecione sua zona preferida dentro da sua região @@ -2613,7 +2613,7 @@ O instalador será fechado e todas as alterações serão perdidas. You can fine-tune language and locale settings below @label - + Você pode ajustar as configurações de idioma e localidade abaixo @@ -2941,7 +2941,7 @@ O instalador será fechado e todas as alterações serão perdidas. Keyboard model: - + Modelo de teclado: @@ -2952,7 +2952,7 @@ O instalador será fechado e todas as alterações serão perdidas. Switch Keyboard: shortcut for switching between keyboard layouts - + Trocar Teclado: @@ -3111,7 +3111,7 @@ O instalador será fechado e todas as alterações serão perdidas. New Partition @title - + Nova Partição @@ -3223,7 +3223,7 @@ O instalador será fechado e todas as alterações serão perdidas. Gathering system information… @status - + Coletando informações do sistema… @@ -3235,55 +3235,55 @@ O instalador será fechado e todas as alterações serão perdidas. Install %1 <strong>alongside</strong> another operating system @label - + Instalar %1 <strong>ao lado de</strong> outro sistema operacional <strong>Erase</strong> disk and install %1 @label - + <strong>Apagar</strong> disco e instalar %1 <strong>Replace</strong> a partition with %1 @label - + <strong>Substituir</strong> uma partição com %1 <strong>Manual</strong> partitioning @label - + Particionamento <strong>manual</strong> Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3) @info - + Instalar %1 <strong>ao lado de</strong> outro sistema operacional no disco <strong>%2</strong> (%3) <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1 @info - + <strong>Limpar</strong> disco <strong>%2</strong> (%3) e instalar %1 <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1 @info - + <strong>Substituir</strong> uma partição no disco <strong>%2</strong> (%3) com %1 <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2) @info - + Particionamento <strong>manual</strong> no disco <strong>%1</strong> (%2) Disk <strong>%1</strong> (%2) @info - + Disco <strong>%1</strong> (%2) @@ -3320,7 +3320,7 @@ O instalador será fechado e todas as alterações serão perdidas. An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. - + Uma partição de sistema EFI é necessária para iniciar o %1.<br/><br/>A partição de sistema EFI não atende às recomendações. É recomendado voltar e selecionar ou criar um sistema de arquivos adequado. @@ -3346,7 +3346,7 @@ O instalador será fechado e todas as alterações serão perdidas. The minimum recommended size for the filesystem is %1 MiB. - + O tamanho mínimo recomendado para o sistema de arquivos é %1 MiB. @@ -3356,7 +3356,7 @@ O instalador será fechado e todas as alterações serão perdidas. You can continue with this EFI system partition configuration but your system may fail to start. - + Você pode continuar com essa configuração de partição de sistema EFI, mas seu sistema pode falhar em iniciar. @@ -3371,7 +3371,7 @@ O instalador será fechado e todas as alterações serão perdidas. EFI system partition recommendation - + Recomendação de partição de sistema EFI @@ -3410,7 +3410,7 @@ O instalador será fechado e todas as alterações serão perdidas. Applying Plasma Look-and-Feel… @status - + Aplicando aparência do Plasma… @@ -3447,7 +3447,7 @@ O instalador será fechado e todas as alterações serão perdidas. Saving files for later… @status - + Salvando arquivos para mais tarde… @@ -3569,7 +3569,7 @@ Saída: Directory not found - Diretório não encontrado + Pasta não encontrada @@ -3614,7 +3614,7 @@ Saída: Removing live user from the target system… @status - + Removendo usuário live do sistema de destino… @@ -3624,18 +3624,18 @@ Saída: Removing Volume Group named %1… @status - + Removendo Grupo de Volumes chamado %1… Removing Volume Group named <strong>%1</strong>… @status - + Removendo Grupo de Volumes chamado <strong>%1</strong>… The installer failed to remove a volume group named '%1'. - O instalador não conseguiu remover um grupo de volumes nomeado '%1'. + O instalador não conseguiu remover um grupo de volumes chamado '%1'. @@ -3661,7 +3661,7 @@ Saída: Performing file system resize… @status - + Executando redimensionamento do sistema de arquivos… @@ -3679,19 +3679,19 @@ Saída: KPMCore not available @error - + O KPMCore não está disponível Calamares cannot start KPMCore for the file system resize job. @error - + O Calamares não pôde iniciar o KPMCore para a tarefa de redimensionamento do sistema de arquivos. Resize failed. @error - + O redimensionamento falhou. @@ -3732,7 +3732,7 @@ Saída: The file system %1 must be resized, but cannot. @info - + O sistema de arquivos %1 deve ser redimensionado, mas não foi possível executar a tarefa. @@ -3747,19 +3747,19 @@ Saída: Resize partition %1 @title - + Redimensionar partição %1 Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong> @info - + Redimensionar partição <strong>%1</strong> de <strong>%2MiB</strong> para <strong>%3MiB</strong> Resizing %2MiB partition %1 to %3MiB… @status - + Redimensionando partição %1 de %2MiB para %3MiB… @@ -3782,24 +3782,24 @@ Saída: Resize volume group named %1 from %2 to %3 @title - + Redimensionar grupo de volumes chamado %1 de %2 para %3 Resize volume group named <strong>%1</strong> from <strong>%2</strong> to <strong>%3</strong> @info - + Redimensionar grupo de volumes chamado <strong>%1</strong> de <strong>%2</strong> para <strong>%3</strong> Resizing volume group named %1 from %2 to %3… @status - + Redimensionando grupo de volumes chamado %1 de %2 para %3… The installer failed to resize a volume group named '%1'. - O instalador não conseguiu redimensionar um grupo de volumes nomeado '%1'. + O instalador não conseguiu redimensionar um grupo de volumes chamado '%1'. @@ -3816,13 +3816,13 @@ Saída: Scanning storage devices… @status - + Localizando dispositivos de armazenamento… Partitioning… @status - + Particionando… @@ -3841,7 +3841,7 @@ Saída: Setting hostname %1… @status - + Definindo nome da máquina %1… @@ -3862,7 +3862,7 @@ Saída: Setting keyboard model to %1, layout as %2-%3… @status, %1 model, %2 layout, %3 variant - + Definindo modelo de teclado para %1, leiaute como %2-%3… @@ -3892,7 +3892,7 @@ Saída: Failed to write keyboard configuration to existing /etc/default directory. @error - Falha ao gravar a configuração do teclado no diretório /etc/default existente. + Falha ao gravar a configuração do teclado na pasta /etc/default existente. @@ -3907,91 +3907,91 @@ Saída: Set flags on partition %1 @title - + Definir marcadores na partição %1 Set flags on %1MiB %2 partition @title - + Definir marcadores na partição %2 de %1MiB Set flags on new partition @title - + Definir marcadores na nova partição Clear flags on partition <strong>%1</strong> @info - + Limpar marcadores na partição <strong>%1</strong> Clear flags on %1MiB <strong>%2</strong> partition @info - + Limpar marcadores na partição <strong>%2</strong> de %1MiB Clear flags on new partition @info - + Limpar marcadores na nova partição Set flags on partition <strong>%1</strong> to <strong>%2</strong> @info - + Definir marcadores na partição <strong>%1</strong> para <strong>%2</strong> Set flags on %1MiB <strong>%2</strong> partition to <strong>%3</strong> @info - + Definir marcadores na partição <strong>%2</strong> de %1MiB para <strong>%3</strong> Set flags on new partition to <strong>%1</strong> @info - + Definir marcadores na nova partição para <strong>%1</strong> Clearing flags on partition <strong>%1</strong>… @status - + Limpando marcadores na partição <strong>%1</strong>… Clearing flags on %1MiB <strong>%2</strong> partition… @status - + Limpando marcadores na partição <strong>%2</strong> de %1MiB… Clearing flags on new partition… @status - + Limpando marcadores na nova partição… Setting flags <strong>%2</strong> on partition <strong>%1</strong>… @status - + Definindo marcadores <strong>%2</strong> na partição <strong>%1</strong>… Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition… @status - + Definindo marcadores <strong>%3</strong> na partição <strong>%2</strong> de %1MiB… Setting flags <strong>%1</strong> on new partition… @status - + Definindo marcadores <strong>%1</strong> na nova partição… @@ -4010,7 +4010,7 @@ Saída: Setting password for user %1… @status - + Definindo senha para usuário %1… @@ -4045,7 +4045,7 @@ Saída: Setting timezone to %1/%2… @status - + Definindo fuso horário para %1/%2… @@ -4085,7 +4085,7 @@ Saída: Preparing groups… @status - + Preparando grupos… @@ -4105,7 +4105,7 @@ Saída: Configuring <pre>sudo</pre> users… @status - + Configurando usuários <pre>sudo</pre>… @@ -4124,7 +4124,7 @@ Saída: Running shell processes… @status - + Executando processos de shell… @@ -4176,7 +4176,7 @@ Saída: Sending installation feedback… @status - + Enviando relatório da instalação… @@ -4200,7 +4200,7 @@ Saída: Configuring KDE user feedback… @status - + Configurando comentários de usuário KDE… @@ -4230,7 +4230,7 @@ Saída: Configuring machine feedback… @status - + Configurando relatórios da máquina… @@ -4302,7 +4302,7 @@ Saída: Unmounting file systems… @status - + Desmontando sistema de arquivos… @@ -4464,19 +4464,19 @@ Saída: About %1 Setup @title - + Sobre a Configuração do %1 About %1 Installer @title - + Sobre o Instalador do %1 %1 Support @action - + Suporte do %1 @@ -4503,7 +4503,7 @@ Saída: Creating ZFS pools and datasets… @status - + Criando pools ZFS e datasets… @@ -4607,7 +4607,7 @@ Saída: <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> This log is copied to /var/log/installation.log of the target system.</p> - <p>Um registro completo da instalação está disponível como installation.log no diretório home do usuário Live.<br/> + <p>Um registro completo da instalação está disponível como installation.log na pasta home do usuário Live.<br/> Esse registro é copiado para /var/log/installation.log do sistema alvo.</p> @@ -4644,7 +4644,7 @@ Saída: <p>A full log of the install is available as installation.log in the home directory of the Live user.<br/> This log is copied to /var/log/installation.log of the target system.</p> @info - <p>Um registro completo da instalação está disponível como installation.log no diretório home do usuário Live.<br/> + <p>Um registro completo da instalação está disponível como installation.log na pasta home do usuário Live.<br/> Esse registro é copiado para /var/log/installation.log do sistema alvo.</p> @@ -4683,19 +4683,19 @@ Saída: Select a layout to activate keyboard preview @label - + Selecione um leiaute para ativar a pré-visualização do teclado <b>Keyboard model:&nbsp;&nbsp;</b> @label - + <b>Modelo de teclado:&nbsp;&nbsp;</b> Layout @label - Layout + Leiaute @@ -4707,7 +4707,7 @@ Saída: Type here to test your keyboard… @label - + Escreva aqui para testar seu teclado… @@ -4716,19 +4716,19 @@ Saída: Select a layout to activate keyboard preview @label - + Selecione um leiaute para ativar a pré-visualização do teclado <b>Keyboard model:&nbsp;&nbsp;</b> @label - + <b>Modelo de teclado:&nbsp;&nbsp;</b> Layout @label - Layout + Leiaute @@ -4740,7 +4740,7 @@ Saída: Type here to test your keyboard… @label - + Escreva aqui para testar seu teclado… @@ -4766,7 +4766,7 @@ Saída: The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. @info <h3>Localização</h3> </br> - A configuração de localização do sistema afeta os formatos de números e datas. A configuração atual é <strong>%1</strong>. + A configuração de localidade do sistema afeta os formatos de números e datas. A configuração atual é <strong>%1</strong>. @@ -4792,7 +4792,7 @@ Saída: The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. @info <h3>Localização</h3> </br> - A configuração de localização do sistema afeta os formatos de números e datas. A configuração atual é <strong>%1</strong>. + A configuração de localidade do sistema afeta os formatos de números e datas. A configuração atual é <strong>%1</strong>. @@ -4953,7 +4953,7 @@ Saída: Your full name - + Seu nome completo @@ -4963,7 +4963,7 @@ Saída: Login name - + Nome de login @@ -4988,7 +4988,7 @@ Saída: Computer name - + Nome do computador @@ -5018,7 +5018,7 @@ Saída: Repeat password - + Repita a senha @@ -5043,12 +5043,12 @@ Saída: Root password - + Senha de Root Repeat root password - + Repita a senha de root @@ -5086,7 +5086,7 @@ Saída: Your full name - + Seu nome completo @@ -5096,7 +5096,7 @@ Saída: Login name - + Nome de login @@ -5121,7 +5121,7 @@ Saída: Computer name - + Nome do computador @@ -5151,7 +5151,7 @@ Saída: Repeat password - + Repita a senha @@ -5176,12 +5176,12 @@ Saída: Root password - + Senha de Root Repeat root password - + Repita a senha de root @@ -5221,12 +5221,12 @@ Saída: Known Issues - + Problemas Conhecidos Release Notes - + Notas de Lançamento @@ -5251,12 +5251,12 @@ Saída: Known Issues - + Problemas Conhecidos Release Notes - + Notas de Lançamento diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index de60313c4..f16037b83 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -1959,13 +1959,13 @@ The installer will quit and all changes will be lost. is checked three times. - + 已检测了 3 次。 The snark has not been checked three times. The (some mythological beast) has not been checked three times. - + snark 没有检查三次。 @@ -4065,7 +4065,7 @@ Output: Preparing groups… @status - + 正在准备群组… @@ -4085,7 +4085,7 @@ Output: Configuring <pre>sudo</pre> users… @status - + 配置 <pre>sudo</pre> 用户… @@ -4104,7 +4104,7 @@ Output: Running shell processes… @status - + 正在运行 shell 进程… @@ -4156,7 +4156,7 @@ Output: Sending installation feedback… @status - + 正在发送安装反馈… @@ -4180,7 +4180,7 @@ Output: Configuring KDE user feedback… @status - + 配置 KDE 用户反馈… @@ -4210,7 +4210,7 @@ Output: Configuring machine feedback… @status - + 正在配置机器反馈… @@ -4282,7 +4282,7 @@ Output: Unmounting file systems… @status - + 正在卸载文件系统… @@ -4444,19 +4444,19 @@ Output: About %1 Setup @title - + 关于 %1 安装程序 About %1 Installer @title - + 关于 %1 安装程序 %1 Support @action - + %1 的支持信息 @@ -4483,7 +4483,7 @@ Output: Creating ZFS pools and datasets… @status - + 正在创建 ZFS 池和数据集… @@ -4737,14 +4737,16 @@ Output: <h3>Languages</h3> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. @info - + <h3>语言</h3></br> + 系统语言区域设置会影响部份命令行用户界面的语言及字符集。 当前设置是 <strong>%1</strong>。 <h3>Locales</h3> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. @info - + <h3>区域</h3></br> + 系统区域设置会影响数字和日期格式。 当前设置是 <strong>%1</strong>。 @@ -4761,14 +4763,16 @@ Output: <h3>Languages</h3> </br> The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>. @info - + <h3>语言</h3></br> + 系统语言区域设置会影响部份命令行用户界面的语言及字符集。 当前设置是 <strong>%1</strong>。 <h3>Locales</h3> </br> The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>. @info - + <h3>区域</h3></br> + 系统区域设置会影响数字和日期格式。 当前设置是 <strong>%1</strong>。 From 1caaac565b613898e3e90b4872641cca7babb437 Mon Sep 17 00:00:00 2001 From: Calamares CI Date: Wed, 1 May 2024 00:08:23 +0200 Subject: [PATCH 41/57] i18n: [python] Automatic merge of Transifex translations --- lang/python/az/LC_MESSAGES/python.po | 4 +-- lang/python/az_AZ/LC_MESSAGES/python.po | 4 +-- lang/python/es/LC_MESSAGES/python.po | 2 +- lang/python/he/LC_MESSAGES/python.po | 2 +- lang/python/ia/LC_MESSAGES/python.po | 38 ++++++++++++------------- lang/python/pt_BR/LC_MESSAGES/python.po | 4 +-- lang/python/sq/LC_MESSAGES/python.po | 10 +++---- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lang/python/az/LC_MESSAGES/python.po b/lang/python/az/LC_MESSAGES/python.po index 8c426b99c..d0fd8e328 100644 --- a/lang/python/az/LC_MESSAGES/python.po +++ b/lang/python/az/LC_MESSAGES/python.po @@ -4,7 +4,7 @@ # FIRST AUTHOR , YEAR. # # Translators: -# xxmn77 , 2023 +# Xəyyam Qocayev , 2023 # #, fuzzy msgid "" @@ -13,7 +13,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-02-12 21:37+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: xxmn77 , 2023\n" +"Last-Translator: Xəyyam Qocayev , 2023\n" "Language-Team: Azerbaijani (https://app.transifex.com/calamares/teams/20061/az/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/lang/python/az_AZ/LC_MESSAGES/python.po b/lang/python/az_AZ/LC_MESSAGES/python.po index 816e52e81..e5ee53da0 100644 --- a/lang/python/az_AZ/LC_MESSAGES/python.po +++ b/lang/python/az_AZ/LC_MESSAGES/python.po @@ -4,7 +4,7 @@ # FIRST AUTHOR , YEAR. # # Translators: -# xxmn77 , 2023 +# Xəyyam Qocayev , 2023 # #, fuzzy msgid "" @@ -13,7 +13,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-02-12 21:37+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: xxmn77 , 2023\n" +"Last-Translator: Xəyyam Qocayev , 2023\n" "Language-Team: Azerbaijani (Azerbaijan) (https://app.transifex.com/calamares/teams/20061/az_AZ/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/lang/python/es/LC_MESSAGES/python.po b/lang/python/es/LC_MESSAGES/python.po index 7eddbf325..a84c40f22 100644 --- a/lang/python/es/LC_MESSAGES/python.po +++ b/lang/python/es/LC_MESSAGES/python.po @@ -6,7 +6,7 @@ # Translators: # strel, 2017 # Guido Grasso , 2018 -# Adolfo Jayme-Barrientos, 2019 +# Adolfo Jayme Barrientos, 2019 # Miguel Mayol , 2020 # Pier Jose Gotta Perez , 2020 # Casper, 2023 diff --git a/lang/python/he/LC_MESSAGES/python.po b/lang/python/he/LC_MESSAGES/python.po index 78fa7927d..483af866a 100644 --- a/lang/python/he/LC_MESSAGES/python.po +++ b/lang/python/he/LC_MESSAGES/python.po @@ -21,7 +21,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" -"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" +"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" #: src/modules/bootloader/main.py:46 msgid "Install bootloader." diff --git a/lang/python/ia/LC_MESSAGES/python.po b/lang/python/ia/LC_MESSAGES/python.po index 492c60f8c..391c0422d 100644 --- a/lang/python/ia/LC_MESSAGES/python.po +++ b/lang/python/ia/LC_MESSAGES/python.po @@ -28,7 +28,7 @@ msgstr "Installar cargator de initio." #: src/modules/bootloader/main.py:666 msgid "Failed to install grub, no partitions defined in global storage" msgstr "" -"Non poteva installar le “grub”, nulle partitiones definite in le " +"Impossibile installar le “grub”, necun partitiones definite in le " "immagazinage global." #: src/modules/bootloader/main.py:926 @@ -65,7 +65,7 @@ msgstr "Non pote configurar LightDM" #: src/modules/displaymanager/main.py:685 msgid "No LightDM greeter installed." -msgstr "Nulle systema de benvenita de LightDM installate." +msgstr "Necun systema de benvenita de LightDM installate." #: src/modules/displaymanager/main.py:716 msgid "Cannot write SLIM configuration file" @@ -78,7 +78,7 @@ msgstr "Le file de configuration de SLIM {!s} non existe" #: src/modules/displaymanager/main.py:938 msgid "No display managers selected for the displaymanager module." msgstr "" -"Nulle gestor de visualisation seligite pro le modulo de «displaymanager»." +"Necun gestor de visualisation seligite pro le modulo de «displaymanager»." #: src/modules/displaymanager/main.py:939 msgid "" @@ -98,7 +98,7 @@ msgstr "Creation de initramfs con dracut." #: src/modules/dracut/main.py:63 msgid "Failed to run dracut" -msgstr "Non poteva executar dracut" +msgstr "Impossibile executar dracut" #: src/modules/dracut/main.py:64 #, python-brace-format @@ -109,7 +109,7 @@ msgstr "" #: src/modules/dummypython/main.py:35 msgid "Dummy python job." -msgstr "Carga ficticie de python." +msgstr "Labor ficticie de python." #: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:104 #: src/modules/dummypython/main.py:105 @@ -134,20 +134,20 @@ msgstr "Error de configuration" #: src/modules/mount/main.py:335 src/modules/openrcdmcryptcfg/main.py:73 #: src/modules/rawfs/main.py:165 msgid "No partitions are defined for
{!s}
to use." -msgstr "Nulle partitiones es definite pro esser usate per
{!s}
." +msgstr "Necun partitiones es definite pro esser usate per
{!s}
." #: src/modules/fstab/main.py:385 src/modules/initramfscfg/main.py:90 #: src/modules/localecfg/main.py:141 src/modules/networkcfg/main.py:107 #: src/modules/openrcdmcryptcfg/main.py:77 msgid "No root mount point is given for
{!s}
to use." msgstr "" -"Nulle puncto de montage de radice es date pro esser usate per " +"Necun puncto de montage de radice es date pro esser usate per " "
{!s}
." #: src/modules/fstab/main.py:413 msgid "No
{!s}
configuration is given for
{!s}
to use." msgstr "" -"Nulle configuration
{!s}
es date pro esser usate per " +"Necun configuration
{!s}
es date pro esser usate per " "
{!s}
." #: src/modules/grubcfg/main.py:30 @@ -164,11 +164,11 @@ msgstr " Configurante “mkinitcpio”." #: src/modules/initcpiocfg/main.py:257 msgid "No partitions are defined for
initcpiocfg
." -msgstr "Nulle partitiones es definite pro
initcpiocfg
." +msgstr "Necun partitiones es definite pro
initcpiocfg
." #: src/modules/initcpiocfg/main.py:261 msgid "No root mount point for
initcpiocfg
." -msgstr "Nulle partitiones es definite pro
initcpiocfg
." +msgstr "Necun partitiones es definite pro
initcpiocfg
." #: src/modules/initramfscfg/main.py:32 msgid "Configuring initramfs." @@ -184,7 +184,7 @@ msgstr "Creante “initramfs” con “mkinitfs”." #: src/modules/mkinitfs/main.py:49 msgid "Failed to run mkinitfs on the target" -msgstr "Non poteva executar “mkinitfs” sur le scopo" +msgstr "Impossibile executar “mkinitfs” sur le scopo" #: src/modules/mkinitfs/main.py:50 msgid "The exit code was {}" @@ -200,15 +200,15 @@ msgstr "Error interne durante le montage de collection de datos de zfs" #: src/modules/mount/main.py:176 msgid "Failed to import zpool" -msgstr "Non poteva importar “zpool”" +msgstr "Impossibile importar “zpool”" #: src/modules/mount/main.py:192 msgid "Failed to unlock zpool" -msgstr "Non poteva disblocar “zpool”" +msgstr "Impossibile disblocar “zpool”" #: src/modules/mount/main.py:209 src/modules/mount/main.py:214 msgid "Failed to set zfs mountpoint" -msgstr "Non poteva definir le puncto de montage de zfs" +msgstr "Impossibile definir le puncto de montage de zfs" #: src/modules/mount/main.py:370 msgid "zfs mounting error" @@ -272,7 +272,7 @@ msgid "" "The package manager could not make changes to the installed system. The " "command
{!s}
returned error code {!s}." msgstr "" -"Le gestor de pacchettos non poteva facer le cambiamentos al systema " +"Le gestor de pacchettos non poteva facer le modificationes al systema " "installate. Le commando
{!s}
retornava le codice de error {!s}." #: src/modules/plymouthcfg/main.py:27 @@ -378,11 +378,11 @@ msgstr "Initiante a dispacchettar {}" #: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467 msgid "Failed to unpack image \"{}\"" -msgstr "Non poteva dispacchettar le imagina “{}”" +msgstr "Impossibile dispacchettar le imagina “{}”" #: src/modules/unpackfs/main.py:430 msgid "No mount point for root partition" -msgstr "Nulle puncto de montage pro le partition radice" +msgstr "Necun puncto de montage pro le partition radice" #: src/modules/unpackfs/main.py:431 msgid "globalstorage does not contain a \"rootMountPoint\" key." @@ -409,7 +409,7 @@ msgstr "Il non ha information de configuration." #: src/modules/unpackfs/main.py:456 msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel" msgstr "" -"Le systema de files para “{}” ({}) non es supportate per tu kernel actual" +"Le systema de files para “{}” ({}) non es supportate per tu nucleo actual" #: src/modules/unpackfs/main.py:460 msgid "The source filesystem \"{}\" does not exist" @@ -420,7 +420,7 @@ msgid "" "Failed to find unsquashfs, make sure you have the squashfs-tools package " "installed." msgstr "" -"Non poteva trovar “unsquashfs”, assecura te que tu ha le pacchetto " +"Impossibile trovar “unsquashfs”, assecura te que tu ha le pacchetto " "“squashfs-tools” installate." #: src/modules/unpackfs/main.py:481 diff --git a/lang/python/pt_BR/LC_MESSAGES/python.po b/lang/python/pt_BR/LC_MESSAGES/python.po index 20698c53e..c4cf8983f 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 , 2020 -# Guilherme MS, 2023 +# Guilherme, 2023 # #, fuzzy msgid "" @@ -14,7 +14,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-02-12 21:37+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Guilherme MS, 2023\n" +"Last-Translator: Guilherme, 2023\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/calamares/teams/20061/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/lang/python/sq/LC_MESSAGES/python.po b/lang/python/sq/LC_MESSAGES/python.po index 7deeb9858..afa6ca3e0 100644 --- a/lang/python/sq/LC_MESSAGES/python.po +++ b/lang/python/sq/LC_MESSAGES/python.po @@ -4,7 +4,7 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Besnik Bleta , 2023 +# Besnik Bleta , 2024 # #, fuzzy msgid "" @@ -13,7 +13,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-02-12 21:37+0100\n" "PO-Revision-Date: 2017-08-09 10:34+0000\n" -"Last-Translator: Besnik Bleta , 2023\n" +"Last-Translator: Besnik Bleta , 2024\n" "Language-Team: Albanian (https://app.transifex.com/calamares/teams/20061/sq/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -371,7 +371,7 @@ msgstr "Po fillohet të shpaketohet {}" #: src/modules/unpackfs/main.py:323 src/modules/unpackfs/main.py:467 msgid "Failed to unpack image \"{}\"" -msgstr "Dështoi shpaketimi i figurës \"{}\"" +msgstr "Dështoi shpaketimi i figurës “{}”" #: src/modules/unpackfs/main.py:430 msgid "No mount point for root partition" @@ -406,7 +406,7 @@ msgstr "" #: src/modules/unpackfs/main.py:460 msgid "The source filesystem \"{}\" does not exist" -msgstr "Sistemi i kartelave \"{}\" ({}) s’ekziston" +msgstr "Sistemi i kartelave “{}” ({}) s’ekziston" #: src/modules/unpackfs/main.py:466 msgid "" @@ -418,7 +418,7 @@ msgstr "" #: src/modules/unpackfs/main.py:481 msgid "The destination \"{}\" in the target system is not a directory" -msgstr "Destinacioni \"{}\" te sistemi i synuar s’është drejtori" +msgstr "Vendmbërritja “{}” te sistemi i synuar s’është drejtori" #: src/modules/zfshostid/main.py:27 msgid "Copying zfs generated hostid." From eb1e5a201f6aa02459e78adbfca3b0081c6847d7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 1 May 2024 00:10:49 +0200 Subject: [PATCH 42/57] i18n: update English sources --- lang/calamares_en.ts | 501 ++++++++++++++++++++++++------------------- lang/python.pot | 54 ++--- 2 files changed, 304 insertions(+), 251 deletions(-) diff --git a/lang/calamares_en.ts b/lang/calamares_en.ts index fc564d970..90f165b71 100644 --- a/lang/calamares_en.ts +++ b/lang/calamares_en.ts @@ -14,14 +14,24 @@ - - <a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. + + Copyright %1-%2 %3 &lt;%4&gt;<br/> + Copyright year-year Name <email-address> + + +
+ + ActiveDirectoryJob + + + Enroll system in Active Directory + @label - - Copyright %1-%2 %3 &lt;%4&gt;<br/> - Copyright year-year Name <email-address> + + Enrolling system in Active Directory… + @status @@ -161,7 +171,7 @@ - + Debug Information @title @@ -176,13 +186,13 @@ - + Set Up @label - + Install @label @@ -204,7 +214,7 @@ Calamares::JobThread - + Done @@ -235,63 +245,63 @@ Calamares::Python::Job - + Running %1 operation. - + Bad working directory path - + Working directory %1 for python job %2 is not readable. - - - - - - + + + + + + Bad main script file - + Main script file %1 for python job %2 is not readable. - + Bad internal script - + Internal script for python job %1 raised an exception. - + Main script file %1 for python job %2 could not be loaded because it raised an exception. - + Main script file %1 for python job %2 raised an exception. - - + + Main script file %1 for python job %2 returned invalid results. - + Main script file %1 for python job %2 does not contain a run() function. @@ -299,37 +309,37 @@ Calamares::PythonJob - + Running %1 operation… @status - + Bad working directory path @error - + Working directory %1 for python job %2 is not readable. @error - + Bad main script file @error - + Main script file %1 for python job %2 is not readable. @error - + Boost.Python error in job "%1" @error @@ -359,13 +369,13 @@ Calamares::RequirementsChecker - + Requirements checking for module '%1' is complete. @info - + Waiting for %n module(s)… @status @@ -374,7 +384,7 @@ - + (%n second(s)) @status @@ -383,7 +393,7 @@ - + System-requirements checking is complete. @info @@ -444,145 +454,145 @@ Link copied to clipboard - + Calamares Initialization Failed @title - + %1 can not be installed. Calamares was unable to load all of the configured modules. This is a problem with the way Calamares is being used by the distribution. @info - + <br/>The following modules could not be loaded: @info - + Continue with Setup? @title - + Continue with Installation? @title - + The %1 setup program is about to make changes to your disk in order to set up %2.<br/><strong>You will not be able to undo these changes.</strong> %1 is short product name, %2 is short product name with version - + The %1 installer is about to make changes to your disk in order to install %2.<br/><strong>You will not be able to undo these changes.</strong> %1 is short product name, %2 is short product name with version - + &Set Up Now @button - + &Install Now @button - + Go &Back @button - + &Set Up @button - + &Install @button - + Setup is complete. Close the setup program. @tooltip - + The installation is complete. Close the installer. @tooltip - + Cancel the setup process without changing the system. @tooltip - + Cancel the installation process without changing the system. @tooltip - + &Next @button - + &Back @button - + &Done @button - + &Cancel @button - + Cancel Setup? @title - + Cancel Installation? @title - + Do you really want to cancel the current setup process? The setup program will quit and all changes will be lost. - + Do you really want to cancel the current install process? The installer will quit and all changes will be lost. @@ -674,9 +684,9 @@ The installer will quit and all changes will be lost. - - - + + + Current: @label @@ -688,144 +698,144 @@ The installer will quit and all changes will be lost. - + Reuse %1 as home partition for %2 @label - + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> - + %1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4. @info, %1 is partition name, %4 is product name - + <strong>Select a partition to install on</strong> @label - + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. @info, %1 is product name - + The EFI system partition at %1 will be used for starting %2. @info, %1 is partition path, %2 is product name - + EFI system partition: @label - + This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - - - - + + + + <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - - - - + + + + <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - - - - + + + + <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - + This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/> - + This storage device has one of its partitions <strong>mounted</strong>. @info - + This storage device is a part of an <strong>inactive RAID</strong> device. @info - + No swap @label - + Reuse swap @label - + Swap (no Hibernate) @label - + Swap (with Hibernate) @label - + Swap to file @label - + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + Bootloader location: @label @@ -894,12 +904,12 @@ The installer will quit and all changes will be lost. CommandList - + Could not run command. - + The commands use variables that are not defined. Missing variables are: %1. @@ -913,73 +923,73 @@ The installer will quit and all changes will be lost. - + Installation Failed @title - + The setup of %1 did not complete successfully. @info - + The installation of %1 did not complete successfully. @info - + Setup Complete @title - + Installation Complete @title - + The setup of %1 is complete. @info - + The installation of %1 is complete. @info - + Keyboard model has been set to %1<br/>. @label, %1 is keyboard model, as in Apple Magic Keyboard - + Keyboard layout has been set to %1/%2. @label, %1 is layout, %2 is layout variant - + Set timezone to %1/%2 @action - + The system language will be set to %1. @info - + The numbers and dates locale will be set to %1. @info @@ -1056,52 +1066,52 @@ The installer will quit and all changes will be lost. - + Your username is too long. - + Your username must start with a lowercase letter or underscore. - + Only lowercase letters, numbers, underscore and hyphen are allowed. - + '%1' is not allowed as username. - + Your hostname is too short. - + Your hostname is too long. - + '%1' is not allowed as hostname. - + Only letters, numbers, underscore and hyphen are allowed. - + Your passwords do not match! - + OK! @@ -1611,12 +1621,12 @@ The installer will quit and all changes will be lost. - + Passphrase for existing partition - + Partition %1 could not be decrypted with the given passphrase.<br/><br/>Edit the partition again and give the correct passphrase or delete and create a new encrypted partition. @@ -1644,14 +1654,14 @@ The installer will quit and all changes will be lost. - - + + Please enter the same passphrase in both boxes. @tooltip - + Password must be a minimum of %1 characters. @tooltip @@ -1753,31 +1763,31 @@ The installer will quit and all changes will be lost. - + <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 setup program.</p></body></html> @tooltip - + <h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment. @info - + <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> @tooltip - + <h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2. @info, %1 is product name with version - + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. @info, %1 is product name with version @@ -2018,19 +2028,19 @@ The installer will quit and all changes will be lost. InteractiveTerminalPage - + Konsole not installed. @error - + Please install KDE Konsole and try again! @info - + Executing script: &nbsp;<code>%1</code> @info @@ -2078,13 +2088,13 @@ The installer will quit and all changes will be lost. - + &Cancel @button - + &OK @button @@ -2139,19 +2149,19 @@ The installer will quit and all changes will be lost. - + If you do not agree with the terms, the setup procedure cannot continue. @info - + This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. @info - + If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. @info @@ -2182,56 +2192,56 @@ The installer will quit and all changes will be lost. - + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> @label, %1 is product name, %2 is product vendor %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> @label, %1 is product name, %2 is product vendor - + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> @label, %1 is product name, %2 is product vendor - + <strong>%1 package</strong><br/><font color="Grey">by %2</font> @label, %1 is product name, %2 is product vendor - + <strong>%1</strong><br/><font color="Grey">by %2</font> @label, %1 is product name, %2 is product vendor - + File: %1 @label - + Hide the license text @tooltip - + Show the license text @tooltip - + Open the license agreement in browser @tooltip @@ -2371,13 +2381,13 @@ The installer will quit and all changes will be lost. Map-qt6 - + Timezone: %1 @label - + Please select your preferred location on the map so the installer can suggest the locale and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming. @@ -3025,6 +3035,31 @@ The installer will quit and all changes will be lost. <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + Use Active Directory + + + + + Domain: + + + + + Domain Administrator: + + + + + Password: + + + + + IP Address (optional): + + PartitionLabelsView @@ -3265,120 +3300,120 @@ The installer will quit and all changes will be lost. - + Unsafe partition actions are enabled. - + Partitioning is configured to <b>always</b> fail. - + No partitions will be changed. - + Current: @label - + After: @label - + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem. - + An EFI system partition is necessary to start %1.<br/><br/>The EFI system partition does not meet recommendations. It is recommended to go back and select or create a suitable filesystem. - + The filesystem must be mounted on <strong>%1</strong>. - + The filesystem must have type FAT32. - + The filesystem must have flag <strong>%1</strong> set. - - + + The filesystem must be at least %1 MiB in size. - + The minimum recommended size for the filesystem is %1 MiB. - + You can continue without setting up an EFI system partition but your system may fail to start. - + You can continue with this EFI system partition configuration but your system may fail to start. - + No EFI system partition configured - + EFI system partition configured incorrectly - + EFI system partition recommendation - + Option to use GPT on BIOS - + A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>%2</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT. - + Boot partition not encrypted - + A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window. - + has at least one disk device available. - + There are no partitions to install on. @@ -3420,6 +3455,20 @@ The installer will quit and all changes will be lost. + + PowerManagementInterface + + + Calamares + + + + + Installation in progress + @status + + + PreserveFiles @@ -3649,66 +3698,66 @@ Output: - + KPMCore not available @error - + Calamares cannot start KPMCore for the file system resize job. @error - + Resize failed. @error - + The filesystem %1 could not be found in this system, and cannot be resized. @info - + The device %1 could not be found in this system, and cannot be resized. @info - - - - + + + + Resize Failed @error - - + + The filesystem %1 cannot be resized. @error - - + + The device %1 cannot be resized. @error - + The file system %1 must be resized, but cannot. @info - + The device %1 must be resized, but cannot @info @@ -3786,13 +3835,13 @@ Output: ScanningDialog - + Scanning storage devices… @status - + Partitioning… @status @@ -3838,37 +3887,37 @@ Output: - + Failed to write keyboard configuration for the virtual console. @error - + Failed to write to %1 @error, %1 is virtual console configuration path - + Failed to write keyboard configuration for X11. @error - + Failed to write to %1 @error, %1 is keyboard configuration path - + Failed to write keyboard configuration to existing /etc/default directory. @error - + Failed to write to %1 @error, %1 is default keyboard path @@ -4033,20 +4082,20 @@ Output: - - + + Cannot set timezone. @error - + Link creation failed, target: %1; link name: %2 @info - + Cannot open /etc/timezone for writing @info @@ -4291,12 +4340,12 @@ Output: UsersPage - + <small>If more than one person will use this computer, you can create multiple accounts after setup.</small> - + <small>If more than one person will use this computer, you can create multiple accounts after installation.</small> @@ -4320,13 +4369,13 @@ Output: VariantModel - + Key Column header for key/value - + Value Column header for key/value @@ -4434,19 +4483,19 @@ Output: - + About %1 Setup @title - + About %1 Installer @title - + %1 Support @action @@ -4850,31 +4899,35 @@ Output: release_notes - <h3>%1</h3> - <p>This an example QML file, showing options in RichText with Flickable content.</p> + ### %1 +This an example QML file, showing options in Markdown with Flickable content. - <p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p> +QML with RichText can use HTML tags, with Markdown it uses the simple Markdown syntax, Flickable content is useful for touchscreens. - <p><b>This is bold text</b></p> - <p><i>This is italic text</i></p> - <p><u>This is underlined text</u></p> - <p><center>This text will be center-aligned.</center></p> - <p><s>This is strikethrough</s></p> +**This is bold text** - <p>Code example: - <code>ls -l /home</code></p> +*This is italic text* - <p><b>Lists:</b></p> - <ul> - <li>Intel CPU systems</li> - <li>AMD CPU systems</li> - </ul> +_This is underlined text_ - <p>The vertical scrollbar is adjustable, current width set to 10.</p> +> blockquote + +~~This is strikethrough~~ + +Code example: +``` +ls -l /home +``` + +**Lists:** + * Intel CPU systems + * AMD CPU systems + +The vertical scrollbar is adjustable, current width set to 10. - + Back diff --git a/lang/python.pot b/lang/python.pot index 2d2290d20..be22dfb27 100644 --- a/lang/python.pot +++ b/lang/python.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-12 21:37+0100\n" +"POT-Creation-Date: 2024-05-01 00:08+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,15 +22,15 @@ msgstr "" msgid "Install bootloader." msgstr "" -#: src/modules/bootloader/main.py:666 +#: src/modules/bootloader/main.py:671 msgid "Failed to install grub, no partitions defined in global storage" msgstr "" -#: src/modules/bootloader/main.py:926 +#: src/modules/bootloader/main.py:931 msgid "Bootloader installation error" msgstr "" -#: src/modules/bootloader/main.py:927 +#: src/modules/bootloader/main.py:932 msgid "" "The bootloader could not be installed. The installation command
{!s} returned error code {!s}."
@@ -68,17 +68,17 @@ msgstr ""
 msgid "SLIM config file {!s} does not exist"
 msgstr ""
 
-#: src/modules/displaymanager/main.py:938
+#: src/modules/displaymanager/main.py:940
 msgid "No display managers selected for the displaymanager module."
 msgstr ""
 
-#: src/modules/displaymanager/main.py:939
+#: src/modules/displaymanager/main.py:941
 msgid ""
 "The displaymanagers list is empty or undefined in both globalstorage and "
 "displaymanager.conf."
 msgstr ""
 
-#: src/modules/displaymanager/main.py:1026
+#: src/modules/displaymanager/main.py:1028
 msgid "Display manager configuration was incomplete"
 msgstr ""
 
@@ -108,29 +108,29 @@ msgstr ""
 msgid "Writing fstab."
 msgstr ""
 
-#: src/modules/fstab/main.py:378 src/modules/fstab/main.py:384
-#: src/modules/fstab/main.py:412 src/modules/initcpiocfg/main.py:256
-#: src/modules/initcpiocfg/main.py:260 src/modules/initramfscfg/main.py:85
+#: src/modules/fstab/main.py:382 src/modules/fstab/main.py:388
+#: src/modules/fstab/main.py:416 src/modules/initcpiocfg/main.py:257
+#: src/modules/initcpiocfg/main.py:261 src/modules/initramfscfg/main.py:85
 #: src/modules/initramfscfg/main.py:89 src/modules/localecfg/main.py:140
-#: src/modules/mount/main.py:334 src/modules/networkcfg/main.py:106
+#: src/modules/mount/main.py:344 src/modules/networkcfg/main.py:106
 #: src/modules/openrcdmcryptcfg/main.py:72
 #: src/modules/openrcdmcryptcfg/main.py:76 src/modules/rawfs/main.py:164
 msgid "Configuration Error"
 msgstr ""
 
-#: src/modules/fstab/main.py:379 src/modules/initramfscfg/main.py:86
-#: src/modules/mount/main.py:335 src/modules/openrcdmcryptcfg/main.py:73
+#: src/modules/fstab/main.py:383 src/modules/initramfscfg/main.py:86
+#: src/modules/mount/main.py:345 src/modules/openrcdmcryptcfg/main.py:73
 #: src/modules/rawfs/main.py:165
 msgid "No partitions are defined for 
{!s}
to use." msgstr "" -#: src/modules/fstab/main.py:385 src/modules/initramfscfg/main.py:90 +#: src/modules/fstab/main.py:389 src/modules/initramfscfg/main.py:90 #: src/modules/localecfg/main.py:141 src/modules/networkcfg/main.py:107 #: src/modules/openrcdmcryptcfg/main.py:77 msgid "No root mount point is given for
{!s}
to use." msgstr "" -#: src/modules/fstab/main.py:413 +#: src/modules/fstab/main.py:417 msgid "No
{!s}
configuration is given for
{!s}
to use." msgstr "" @@ -146,11 +146,11 @@ msgstr "" msgid "Configuring mkinitcpio." msgstr "" -#: src/modules/initcpiocfg/main.py:257 +#: src/modules/initcpiocfg/main.py:258 msgid "No partitions are defined for
initcpiocfg
." msgstr "" -#: src/modules/initcpiocfg/main.py:261 +#: src/modules/initcpiocfg/main.py:262 msgid "No root mount point for
initcpiocfg
." msgstr "" @@ -178,23 +178,23 @@ msgstr "" msgid "Mounting partitions." msgstr "" -#: src/modules/mount/main.py:164 src/modules/mount/main.py:200 +#: src/modules/mount/main.py:171 src/modules/mount/main.py:207 msgid "Internal error mounting zfs datasets" msgstr "" -#: src/modules/mount/main.py:176 +#: src/modules/mount/main.py:183 msgid "Failed to import zpool" msgstr "" -#: src/modules/mount/main.py:192 +#: src/modules/mount/main.py:199 msgid "Failed to unlock zpool" msgstr "" -#: src/modules/mount/main.py:209 src/modules/mount/main.py:214 +#: src/modules/mount/main.py:216 src/modules/mount/main.py:221 msgid "Failed to set zfs mountpoint" msgstr "" -#: src/modules/mount/main.py:370 +#: src/modules/mount/main.py:383 msgid "zfs mounting error" msgstr "" @@ -230,24 +230,24 @@ msgid_plural "Removing %(num)d packages." msgstr[0] "" msgstr[1] "" -#: src/modules/packages/main.py:740 src/modules/packages/main.py:752 -#: src/modules/packages/main.py:780 +#: src/modules/packages/main.py:769 src/modules/packages/main.py:781 +#: src/modules/packages/main.py:809 msgid "Package Manager error" msgstr "" -#: src/modules/packages/main.py:741 +#: src/modules/packages/main.py:770 msgid "" "The package manager could not prepare updates. The command
{!s}
" "returned error code {!s}." msgstr "" -#: src/modules/packages/main.py:753 +#: src/modules/packages/main.py:782 msgid "" "The package manager could not update the system. The command
{!s}
" "returned error code {!s}." msgstr "" -#: src/modules/packages/main.py:781 +#: src/modules/packages/main.py:810 msgid "" "The package manager could not make changes to the installed system. The " "command
{!s}
returned error code {!s}." From 5d19b875a1b091833b4524c985be14df66163ae3 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 14 May 2024 21:31:12 +0200 Subject: [PATCH 43/57] [keyboard] Prefer layout "it" over "it2" for Italian FIXES #2326 --- src/modules/keyboard/Tests.cpp | 1 + src/modules/keyboard/kbd-model-map | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/keyboard/Tests.cpp b/src/modules/keyboard/Tests.cpp index 4c6d0cebb..2cdb58935 100644 --- a/src/modules/keyboard/Tests.cpp +++ b/src/modules/keyboard/Tests.cpp @@ -45,6 +45,7 @@ KeyboardLayoutTests::testSimpleLayoutLookup_data() QTest::newRow( "turkish default" ) << QString( "tr" ) << QString() << QString() << QString( "trq" ); QTest::newRow( "turkish alt-q" ) << QString( "tr" ) << QString() << QString( "alt" ) << QString( "trq" ); QTest::newRow( "turkish f" ) << QString( "tr" ) << QString() << QString( "f" ) << QString( "trf" ); + QTest::newRow( "italian" ) << QString( "it" ) << QString( "pc105" ) << QString() << QString( "it" ); } diff --git a/src/modules/keyboard/kbd-model-map b/src/modules/keyboard/kbd-model-map index 6ec00c81b..ab024f0c2 100644 --- a/src/modules/keyboard/kbd-model-map +++ b/src/modules/keyboard/kbd-model-map @@ -40,6 +40,7 @@ slovene si pc105 - terminate:ctrl_alt_bksp hu101 hu pc105 qwerty terminate:ctrl_alt_bksp jp106 jp jp106 - terminate:ctrl_alt_bksp croat hr pc105 - terminate:ctrl_alt_bksp +it it pc105 - terminate:ctrl_alt_bksp it2 it pc105 - terminate:ctrl_alt_bksp hu hu pc105 - terminate:ctrl_alt_bksp sr-latin rs pc105 latin terminate:ctrl_alt_bksp @@ -47,7 +48,6 @@ fi fi pc105 - terminate:ctrl_alt_bksp fr_CH ch pc105 fr terminate:ctrl_alt_bksp dk-latin1 dk pc105 - terminate:ctrl_alt_bksp fr fr pc105 - terminate:ctrl_alt_bksp -it it pc105 - terminate:ctrl_alt_bksp ua-utf ua,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll fr-latin1 fr pc105 - terminate:ctrl_alt_bksp sg-latin1 ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp From 448633ab026209c95c95599f8cbbf69c58d4999d Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 14 May 2024 21:45:34 +0200 Subject: [PATCH 44/57] [contextualprocess] Refer documentation to shellprocess --- src/modules/contextualprocess/contextualprocess.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/contextualprocess/contextualprocess.conf b/src/modules/contextualprocess/contextualprocess.conf index ba8a8bf1d..e5c1c1d6c 100644 --- a/src/modules/contextualprocess/contextualprocess.conf +++ b/src/modules/contextualprocess/contextualprocess.conf @@ -46,7 +46,8 @@ # # The values after a value sub-keys are the same kinds of values # as can be given to the *script* key in the shellprocess module. -# See shellprocess.conf for documentation on valid values. +# See shellprocess.conf for documentation on valid values and how +# variables are expanded in those commands. --- dontChroot: false firmwareType: From 8a14ddc97ccc4da7c25ea787c7c0c41788a7cf80 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 14 May 2024 22:35:50 +0200 Subject: [PATCH 45/57] [shellprocess] Allow gs[key] variables in commands --- src/libcalamares/utils/CommandList.cpp | 40 ++++++++++++++++++++++ src/libcalamares/utils/Tests.cpp | 20 +++++++++-- src/modules/shellprocess/shellprocess.conf | 11 ++++++ 3 files changed, 68 insertions(+), 3 deletions(-) diff --git a/src/libcalamares/utils/CommandList.cpp b/src/libcalamares/utils/CommandList.cpp index 86efe1d38..0f5111eac 100644 --- a/src/libcalamares/utils/CommandList.cpp +++ b/src/libcalamares/utils/CommandList.cpp @@ -55,6 +55,41 @@ get_variant_stringlist( const QVariantList& l ) return retl; } +/** @brief Inserts the keys from @p map into @p expander as "gs"-keys + * + * For each key k in @p map, a key with literal `gs[` + prefix + '.' + key + + * literal `]` is inserted into the exapander. + */ +static void +expand_tree( Calamares::String::DictionaryExpander& expander, const QString& prefix, const QVariantMap& map ) +{ + // With the current prefix, turn a key into gs[prefix.key] + auto gs_key = [ &prefix ]( const QString& k ) -> QString + { return QStringLiteral( "gs[" ) + ( prefix.isEmpty() ? QString() : prefix + '.' ) + k + ']'; }; + + for ( QVariantMap::const_iterator valueiter = map.cbegin(); valueiter != map.cend(); ++valueiter ) + { + const QString key = valueiter.key(); + const QVariant value = valueiter.value(); + + switch ( Calamares::typeOf( value ) ) + { + case Calamares::MapVariantType: + expand_tree( expander, prefix.isEmpty() ? key : ( prefix + '.' + key ), value.toMap() ); + break; + case Calamares::StringVariantType: + expander.add( gs_key( key ), value.toString() ); + break; + case Calamares::IntVariantType: + expander.add( gs_key( key ), QString::number( value.toInt() ) ); + break; + default: + // Silently ignore + break; + } + } +} + static Calamares::String::DictionaryExpander get_gs_expander( System::RunLocation location ) { @@ -88,6 +123,11 @@ get_gs_expander( System::RunLocation location ) } } + if ( gs ) + { + expand_tree( expander, QString(), gs->data() ); + } + return expander; } diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index 2e1b5655c..89dd45dfb 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -282,9 +282,17 @@ LibCalamaresTests::testCommandExpansion_data() QTest::addColumn< QString >( "command" ); QTest::addColumn< QString >( "expected" ); - QTest::newRow( "empty" ) << QString() << QString(); - QTest::newRow( "ls " ) << QStringLiteral( "ls" ) << QStringLiteral( "ls" ); - QTest::newRow( "user " ) << QStringLiteral( "chmod $USER" ) << QStringLiteral( "chmod alice" ); + QTest::newRow( "empty " ) << QString() << QString(); + QTest::newRow( "ls " ) << QStringLiteral( "ls" ) << QStringLiteral( "ls" ); + QTest::newRow( "$USER " ) << QStringLiteral( "chmod $USER" ) << QStringLiteral( "chmod alice" ); + QTest::newRow( "${USER}" ) << QStringLiteral( "chmod ${USER}" ) << QStringLiteral( "chmod alice" ); + QTest::newRow( "gs-user" ) << QStringLiteral( "chmod ${gs[username]}" ) << QStringLiteral( "chmod alice" ); + QTest::newRow( "gs-* " ) << QStringLiteral( + "${gs[username]} has ${gs[branding.bootloader]} ${gs[branding.ducks]} ducks" ) + << QStringLiteral( "alice has found 3 ducks" ); + // QStringList does not expand + QTest::newRow( "gs-list" ) << QStringLiteral( "colors ${gs[branding.color]}" ) + << QStringLiteral( "colors ${gs[branding.color]}" ); } void @@ -295,6 +303,12 @@ LibCalamaresTests::testCommandExpansion() QVERIFY( gs ); gs->insert( QStringLiteral( "username" ), QStringLiteral( "alice" ) ); + QVariantMap m; + m.insert( QStringLiteral( "bootloader" ), QStringLiteral( "found" ) ); + m.insert( QStringLiteral( "ducks" ), 3 ); + m.insert( QStringLiteral( "color" ), QStringList { "green", "red" } ); + gs->insert( QStringLiteral( "branding" ), m ); + QFETCH( QString, command ); QFETCH( QString, expected ); Calamares::CommandLine c( command, std::chrono::seconds( 0 ) ); diff --git a/src/modules/shellprocess/shellprocess.conf b/src/modules/shellprocess/shellprocess.conf index 87e31c58c..41a7d2733 100644 --- a/src/modules/shellprocess/shellprocess.conf +++ b/src/modules/shellprocess/shellprocess.conf @@ -16,6 +16,17 @@ # of Calamares, set on the welcome page. This may not reflect the # chosen system language from the locale page. # +# As a special case, variables of the form `gs[key]` where `key` is +# a dotted-keys string and `gs` is literally the letters `g` and `s`, +# use **any** value from Global Storage. For example, +# +# gs[branding.bootloader] +# +# This variable refers to the GS value stored in `bootloader` in the +# `branding` map. Examine the Debug window for information about the +# keys stored in GS. Only strings and integers are exposed this way, +# lists and other data types do not set any variable this way. +# # Variables are written as `${var}`, e.g. `${ROOT}`. # Write `$$` to get a shell-escaped `\$` in the shell command. # It is not possible to get an un-escaped `$` in the shell command From 461f011521c615b4b7bf11a53c3da9f6b76ec40c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 14 May 2024 23:37:03 +0200 Subject: [PATCH 46/57] [libcalamares] Avoid some undesirable overloads Implicit int -> bool had a comment, which suggests it should just be deleted from the overload set to avoid possible confusion. --- src/libcalamares/utils/CommandList.h | 2 ++ src/libcalamares/utils/Tests.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libcalamares/utils/CommandList.h b/src/libcalamares/utils/CommandList.h index 17a251a7c..331127c1e 100644 --- a/src/libcalamares/utils/CommandList.h +++ b/src/libcalamares/utils/CommandList.h @@ -104,6 +104,8 @@ public: /** @brief empty command-list with timeout to apply to entries. */ CommandList( bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) ); CommandList( const QVariant& v, bool doChroot = true, std::chrono::seconds timeout = std::chrono::seconds( 10 ) ); + CommandList( int ) = delete; + CommandList( const QVariant&, int ) = delete; bool doChroot() const { return m_doChroot; } std::chrono::seconds defaultTimeout() const { return m_timeout; } diff --git a/src/libcalamares/utils/Tests.cpp b/src/libcalamares/utils/Tests.cpp index 89dd45dfb..fd1411d38 100644 --- a/src/libcalamares/utils/Tests.cpp +++ b/src/libcalamares/utils/Tests.cpp @@ -364,8 +364,14 @@ commands: QCOMPARE( m[ "commands" ].toList().count(), 4 ); { - // Take care! The second parameter is a bool, so "3" here means "true" +#ifdef THIS_DOES_NOT_COMPILE_AND_THATS_THE_POINT + // Take care! The second parameter is a bool, so "3" here would + // mean "true", except the int overload is deleted to prevent just that. Calamares::CommandList cmds( m[ "commands" ], 3 ); + // .. and there's no conversion from std::chrono::duration to bool either. + Calamares::CommandList cmds( m[ "commands" ], std::chrono::seconds( 3 ) ); +#endif + Calamares::CommandList cmds( m[ "commands" ], true ); QCOMPARE( cmds.defaultTimeout(), std::chrono::seconds( 10 ) ); // But the 4 commands are there anyway QCOMPARE( cmds.count(), 4 ); From 48554cf310273455507de11d2a2db0ac0eec63a7 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 14 May 2024 22:42:08 +0200 Subject: [PATCH 47/57] Changes: document new shellprocess possibilities --- CHANGES-3.3 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index 147379955..4ce6a10e4 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -21,8 +21,11 @@ This release contains contributions from (alphabetically by first name): ## Core ## - Updated clang-formatting - Some C++20 future-proofing (thanks Vladislav) + - CommandList (used by *contextualprocess* and *shellprocess*) now supports + globalstorage keys as substitutable variables. ## Modules ## + - *contextualprocess* see *shellprocess*. - *fstab* module does not add an encryption keyfile if it does not exist. (thanks Eugene) - *keyboard* module handles Persian (fa) layout better. (thanks Sohrab) @@ -31,6 +34,10 @@ This release contains contributions from (alphabetically by first name): they were not written, either, so no net change. - *partition* module now has a configurable default check-state for the encryption checkbox. (thanks Vincent) + - *shellprocess* commands now support globalstorage variables, which + are written as `${gs[key]}`, where `key` is a dotted string that + selects the globalstorage key to use (like in *contextualprocess* + variable-selectors) and `${gs[` and `]}` are literal characters. # 3.3.6 (2024-04-16) From 19b0f28f162c3b001d47c6eb250d5abb5518bd83 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 10 Jun 2024 22:16:56 +0200 Subject: [PATCH 48/57] [initcpiocfg] Support additional hooks-munging FIXES #2200 --- src/modules/initcpiocfg/initcpiocfg.conf | 19 +++++++++++++++++++ .../initcpiocfg/initcpiocfg.schema.yaml | 9 +++++++-- src/modules/initcpiocfg/main.py | 10 ++++++++++ src/modules/initcpiocfg/test.yaml | 7 +++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 src/modules/initcpiocfg/test.yaml diff --git a/src/modules/initcpiocfg/initcpiocfg.conf b/src/modules/initcpiocfg/initcpiocfg.conf index fc226ec84..281767026 100644 --- a/src/modules/initcpiocfg/initcpiocfg.conf +++ b/src/modules/initcpiocfg/initcpiocfg.conf @@ -9,3 +9,22 @@ # # Please note that using the systemd hooks result in no access to the emergency recovery shell useSystemdHook: false + +# +# Modifications to the standard list of hooks. +# +# There are three subkeys: +# - prepend, which puts hooks at the beginning of the +# list of hooks, in the order specified here, +# - append, which adds hooks at the end of the list of +# hooks, in the order specified here, +# - remove, which removes hooks from the list of hooks, +# wherever they may be. +# +# The example configuration here yields bogus, , bogus +# initially, and then removes that hook again. +# +hooks: + prepend: [ bogus ] + append: [ bogus ] + remove: [ bogus ] diff --git a/src/modules/initcpiocfg/initcpiocfg.schema.yaml b/src/modules/initcpiocfg/initcpiocfg.schema.yaml index f071e79aa..487da529f 100644 --- a/src/modules/initcpiocfg/initcpiocfg.schema.yaml +++ b/src/modules/initcpiocfg/initcpiocfg.schema.yaml @@ -7,5 +7,10 @@ additionalProperties: false type: object properties: useSystemdHook: { type: boolean } - - + hooks: + type: object + additionalProperties: false + properties: + prepend: { type: array, items: string } + append: { type: array, items: string } + remove: { type: array, items: string } diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index 13a281bb3..bbc403a9c 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -168,6 +168,13 @@ def find_initcpio_features(partitions, root_mount_point): hooks.append("keymap") hooks.append("consolefont") + hooks_map = libcalamares.job.configuration.get("hooks", None) + if not hooks_map: + hooks_map = dict() + hooks_prepend = hooks_map.get("prepend", None) or [] + hooks_append = hooks_map.get("append", None) or [] + hooks_remove = hooks_map.get("remove", None) or [] + modules = [] files = [] binaries = [] @@ -240,6 +247,9 @@ def find_initcpio_features(partitions, root_mount_point): else: hooks.append("fsck") + # Modify according to the keys in the configuration + hooks = [h for h in (hooks_prepend + hooks + hooks_append) if h not in hooks_remove] + return hooks, modules, files, binaries diff --git a/src/modules/initcpiocfg/test.yaml b/src/modules/initcpiocfg/test.yaml new file mode 100644 index 000000000..f832bec91 --- /dev/null +++ b/src/modules/initcpiocfg/test.yaml @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +rootMountPoint: /tmp/mount +partitions: + - fs: ext4 + mountPoint: "/" + From f651fc9bff4e1b74b282b490bca0b38cd5196395 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 10 Jun 2024 22:33:29 +0200 Subject: [PATCH 49/57] [initcpiocfg] Allow alternate source file This is possibly only interesting for testing purposes. --- src/modules/initcpiocfg/initcpiocfg.conf | 8 ++++++++ src/modules/initcpiocfg/initcpiocfg.schema.yaml | 1 + src/modules/initcpiocfg/main.py | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/initcpiocfg/initcpiocfg.conf b/src/modules/initcpiocfg/initcpiocfg.conf index 281767026..a66039397 100644 --- a/src/modules/initcpiocfg/initcpiocfg.conf +++ b/src/modules/initcpiocfg/initcpiocfg.conf @@ -28,3 +28,11 @@ hooks: prepend: [ bogus ] append: [ bogus ] remove: [ bogus ] + +# +# In some cases, you may want to use a different source +# file than /etc/mkinitcpio.conf , e.g. because the live system +# does not match the target in a useful way. If unset or +# empty, defaults to /etc/mkinitcpio.conf +# +source: "/etc/mkinitcpio.conf" diff --git a/src/modules/initcpiocfg/initcpiocfg.schema.yaml b/src/modules/initcpiocfg/initcpiocfg.schema.yaml index 487da529f..5595b6093 100644 --- a/src/modules/initcpiocfg/initcpiocfg.schema.yaml +++ b/src/modules/initcpiocfg/initcpiocfg.schema.yaml @@ -14,3 +14,4 @@ properties: prepend: { type: array, items: string } append: { type: array, items: string } remove: { type: array, items: string } + source: { type: string } diff --git a/src/modules/initcpiocfg/main.py b/src/modules/initcpiocfg/main.py index bbc403a9c..a70d4ffe9 100644 --- a/src/modules/initcpiocfg/main.py +++ b/src/modules/initcpiocfg/main.py @@ -97,7 +97,7 @@ def get_host_initcpio(): the lines from that file, or an empty list if it does not exist. """ - hostfile = "/etc/mkinitcpio.conf" + hostfile = libcalamares.job.configuration.get("source", None) or "/etc/mkinitcpio.conf" try: with open(hostfile, "r") as mkinitcpio_file: mklins = [x.strip() for x in mkinitcpio_file.readlines()] From ad28ae08b60464dc96608e91d93d8622dfbe1428 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 10 Jun 2024 22:47:18 +0200 Subject: [PATCH 50/57] Changes: document existence of new initcpiocfg settings --- CHANGES-3.3 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index 4ce6a10e4..9b5c1de7d 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -28,6 +28,8 @@ This release contains contributions from (alphabetically by first name): - *contextualprocess* see *shellprocess*. - *fstab* module does not add an encryption keyfile if it does not exist. (thanks Eugene) + - *initcpiocfg* has some new configuration settings to more carefully + adjust hooks for initcpio. - *keyboard* module handles Persian (fa) layout better. (thanks Sohrab) - *keyboard* module handles other non-ascii layout better. (thanks Ivan) - *partition* module did not filter out invalid fstab entries; From 81c82ef343353dd37af33a7c9570e61a6a22121a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 11 Jun 2024 00:21:35 +0200 Subject: [PATCH 51/57] [displaymanager] Look for variant gdm config files FIXES #2335 --- src/modules/displaymanager/main.py | 26 +++++++++++++++---- .../displaymanager/tests/CMakeTests.txt | 2 +- .../displaymanager/tests/test-dm-gdm.py | 19 ++++++++++++++ 3 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 src/modules/displaymanager/tests/test-dm-gdm.py diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 217cd56b0..6ca279e18 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -376,14 +376,30 @@ class DMgdm(DisplayManager): GDM exists with different executable names, so search for one of them and use it. """ - for executable, config in ( + candidates = ( ( "gdm", "etc/gdm/custom.conf" ), - ( "gdm3", "etc/gdm3/daemon.conf" ) - ): + ( "gdm3", "etc/gdm3/daemon.conf" ), + ( "gdm3", "etc/gdm3/custom.conf" ), + ) + + def have_executable(executable : str): bin_path = "{!s}/usr/bin/{!s}".format(self.root_mount_point, executable) sbin_path = "{!s}/usr/sbin/{!s}".format(self.root_mount_point, executable) - if os.path.exists(bin_path) or os.path.exists(sbin_path): - # Keep the found-executable name around for later + return os.path.exists(bin_path) or os.path.exists(sbin_path) + + def have_config(config : str): + config_path = "{!s}/{!s}".format(self.root_mount_point, config) + return os.path.exists(config_path) + + # Look for an existing configuration file as a hint, then + # keep the found-executable name and config around for later. + for executable, config in candidates: + if have_config(config) and have_executable(executable): + self.executable = executable + self.config = config + return True + for executable, config in candidates: + if have_executable(executable): self.executable = executable self.config = config return True diff --git a/src/modules/displaymanager/tests/CMakeTests.txt b/src/modules/displaymanager/tests/CMakeTests.txt index 70e3d580d..22195f281 100644 --- a/src/modules/displaymanager/tests/CMakeTests.txt +++ b/src/modules/displaymanager/tests/CMakeTests.txt @@ -4,7 +4,7 @@ # We have tests to load (some) of the DMs specifically, to test their # configuration code. Those tests conventionally live in Python # files here in the tests/ directory. Add them. -foreach(_dmname greetd sddm) +foreach(_dmname greetd sddm gdm) add_test( NAME configure-displaymanager-${_dmname} COMMAND env PYTHONPATH=.: python3 ${CMAKE_CURRENT_LIST_DIR}/test-dm-${_dmname}.py diff --git a/src/modules/displaymanager/tests/test-dm-gdm.py b/src/modules/displaymanager/tests/test-dm-gdm.py new file mode 100644 index 000000000..778bb8fbb --- /dev/null +++ b/src/modules/displaymanager/tests/test-dm-gdm.py @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# Calamares Boilerplate +import libcalamares +libcalamares.globalstorage = libcalamares.GlobalStorage(None) +libcalamares.globalstorage.insert("testing", True) + +# Module prep-work +from src.modules.displaymanager import main +default_desktop_environment = main.DesktopEnvironment("startplasma-x11", "kde-plasma.desktop") + +# Specific DM test +d = main.DMgdm("/tmp") +d.have_dm() +d.set_autologin("d", True, default_desktop_environment) +# .. and again (this time checks load/save) +d.set_autologin("d", True, default_desktop_environment) +d.set_autologin("d", True, default_desktop_environment) From 84d1599845c7df2af9c5a944689f0a53f69e5d96 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Jun 2024 17:08:55 +0200 Subject: [PATCH 52/57] Changes: pre-release housekeeping --- CHANGES-3.3 | 2 +- CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES-3.3 b/CHANGES-3.3 index 9b5c1de7d..0c7ecd145 100644 --- a/CHANGES-3.3 +++ b/CHANGES-3.3 @@ -7,7 +7,7 @@ contributors are listed. Note that Calamares does not have a historical changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for the history of the 3.2 series (2018-05 - 2022-08). -# 3.3.7 (unreleased) +# 3.3.7 (2024-06-20) This release contains contributions from (alphabetically by first name): - Adriaan de Groot diff --git a/CMakeLists.txt b/CMakeLists.txt index 67ae8cc31..9da614e5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,7 +48,7 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR) set(CALAMARES_VERSION 3.3.7) -set(CALAMARES_RELEASE_MODE OFF) # Set to ON during a release +set(CALAMARES_RELEASE_MODE ON) # Set to ON during a release if(CMAKE_SCRIPT_MODE_FILE) include(${CMAKE_CURRENT_LIST_DIR}/CMakeModules/ExtendedVersion.cmake) From 52cff12c384fd1081f6bc2ed3b34cb0a7ee0697a Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Jun 2024 19:21:07 +0200 Subject: [PATCH 53/57] [displaymanager] Repair test for gdm3 This was intended to check code for obvious logical failures, but also stops tests because the gdm paths don't exist. For testing purposes, create bogus gdm3 executable in the "target" tempdir. --- .../displaymanager/tests/test-dm-gdm.py | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/modules/displaymanager/tests/test-dm-gdm.py b/src/modules/displaymanager/tests/test-dm-gdm.py index 778bb8fbb..4856e8af3 100644 --- a/src/modules/displaymanager/tests/test-dm-gdm.py +++ b/src/modules/displaymanager/tests/test-dm-gdm.py @@ -10,10 +10,17 @@ libcalamares.globalstorage.insert("testing", True) from src.modules.displaymanager import main default_desktop_environment = main.DesktopEnvironment("startplasma-x11", "kde-plasma.desktop") -# Specific DM test -d = main.DMgdm("/tmp") -d.have_dm() -d.set_autologin("d", True, default_desktop_environment) -# .. and again (this time checks load/save) -d.set_autologin("d", True, default_desktop_environment) -d.set_autologin("d", True, default_desktop_environment) +import os +import tempfile +with tempfile.TemporaryDirectory(prefix="calamares-gdm") as tempdir: + os.makedirs(tempdir + "/usr/bin") + os.makedirs(tempdir + "/etc/gdm3") + with open(tempdir + "/usr/bin/gdm3", "w") as f: + f.write("#! /bin/sh\n:\n") + # Specific DM test + d = main.DMgdm(tempdir) + assert(d.have_dm()) + d.set_autologin("d", True, default_desktop_environment) + # .. and again (this time checks load/save) + d.set_autologin("d", True, default_desktop_environment) + d.set_autologin("d", True, default_desktop_environment) From 2e825167a336904619c115d1d41a29a91a67eed0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Jun 2024 19:34:01 +0200 Subject: [PATCH 54/57] [rawfs] Don't bother updating mount if this is a test (bogus) run This improves things when running tests on FreeBSD, which doesn't have a /proc/mounts to read. --- src/modules/rawfs/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/rawfs/main.py b/src/modules/rawfs/main.py index a72ffe19d..736fc39cb 100644 --- a/src/modules/rawfs/main.py +++ b/src/modules/rawfs/main.py @@ -126,7 +126,7 @@ class RawFSItem: config["source"], device)) self.source = os.path.realpath(config["source"]) # If source is a mount point, look for the actual device mounted on it - if os.path.ismount(self.source): + if os.path.ismount(self.source) and not libcalamares.job.configuration.get("bogus", False): procmounts = open("/proc/mounts", "r") for line in procmounts: if self.source in line.split(): From 3d4b408c93e995f6f0266015f2173174454c629f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Jun 2024 19:38:48 +0200 Subject: [PATCH 55/57] [rawfs] Read blkid stdout only once, be more clear when there isn't a uuid --- src/modules/rawfs/main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/rawfs/main.py b/src/modules/rawfs/main.py index 736fc39cb..760498212 100644 --- a/src/modules/rawfs/main.py +++ b/src/modules/rawfs/main.py @@ -146,9 +146,10 @@ def update_global_storage(item, gs): ret = subprocess.run(["blkid", "-s", "UUID", "-o", "value", item.destination], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) if ret.returncode == 0: + uuid = ret.stdout.rstrip() libcalamares.utils.debug("Setting {} UUID to {}".format(item.destination, - ret.stdout.rstrip())) - gs[gs.index(partition)]["uuid"] = ret.stdout.rstrip() + uuid or "")) + gs[gs.index(partition)]["uuid"] = uuid gs[gs.index(partition)]["source"] = item.source libcalamares.globalstorage.remove("partitions") From 991be792c0c8751feca27e58ce9e8a756ff154eb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Jun 2024 19:43:50 +0200 Subject: [PATCH 56/57] [rawfs] Do not mark tests on FreeBSD as "must fail" --- src/modules/rawfs/tests/CMakeTests.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/rawfs/tests/CMakeTests.txt b/src/modules/rawfs/tests/CMakeTests.txt index ed4c37485..c31bba964 100644 --- a/src/modules/rawfs/tests/CMakeTests.txt +++ b/src/modules/rawfs/tests/CMakeTests.txt @@ -5,8 +5,10 @@ # Special cases for rawfs tests # # - On FreeBSD, /proc/mounts doesn't exist (/proc is only about processes, -# and is rarely used). Expect the test to fail. +# and is rarely used). The test would fail, except it catches that +# kind of error and ends up doing nothing. if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - set_tests_properties(load-rawfs-1 PROPERTIES WILL_FAIL TRUE) + # set_tests_properties(load-rawfs-1 PROPERTIES WILL_FAIL TRUE) + message(STATUS "rawfs tests are useless on FreeBSD") endif() From ea744a0c0cb573ec84a183c4138ba1e0a175d8e2 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 20 Jun 2024 19:48:47 +0200 Subject: [PATCH 57/57] [partition] On FreeBSD, don't expect the KPMCore test to work --- src/modules/partition/tests/DevicesTests.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modules/partition/tests/DevicesTests.cpp b/src/modules/partition/tests/DevicesTests.cpp index 1f80e2294..16666d132 100644 --- a/src/modules/partition/tests/DevicesTests.cpp +++ b/src/modules/partition/tests/DevicesTests.cpp @@ -51,6 +51,11 @@ DevicesTests::testKPMScanDevices() cDebug() << "Getting devices via KPMCore"; CoreBackend* backend = CoreBackendManager::self()->backend(); +#ifdef Q_OS_FREEBSD + QEXPECT_FAIL( "", "Test backend not expected on FreeBSD", Continue ); + QVERIFY( backend ); + return; +#endif QVERIFY( backend ); auto devices = backend->scanDevices( ScanFlag( ~0 ) ); // These flags try to get "all" cDebug() << Logger::SubEntry << "Done getting devices.";