Merge branch 'master' of https://github.com/calamares/calamares into development
This commit is contained in:
commit
d07b529c92
12
CHANGES
12
CHANGES
@ -3,10 +3,20 @@ contributors are listed. Note that Calamares does not have a historical
|
||||
changelog -- this log starts with version 3.2.0. The release notes on the
|
||||
website will have to do for older versions.
|
||||
|
||||
# 3.2.10 (unreleased) #
|
||||
# 3.2.11 (unreleased) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
|
||||
## Core ##
|
||||
|
||||
## Modules ##
|
||||
|
||||
|
||||
# 3.2.10 (2019-06-28) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- No other contributors this time around.
|
||||
|
||||
Distributions are **advised** to check the slideshow they use for the
|
||||
installation step; changes in loading and translation mechanisms may
|
||||
require changes in the slideshow.
|
||||
|
@ -37,7 +37,7 @@
|
||||
|
||||
cmake_minimum_required( VERSION 3.2 FATAL_ERROR )
|
||||
project( CALAMARES
|
||||
VERSION 3.2.10
|
||||
VERSION 3.2.11
|
||||
LANGUAGES C CXX )
|
||||
|
||||
set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development
|
||||
|
@ -1142,7 +1142,7 @@ L'instal·lador es tancarà i tots els canvis es perdran.</translation>
|
||||
<message>
|
||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="133"/>
|
||||
<source><h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2.</source>
|
||||
<translation><h1>La configuració ha fallat</h1><br/>No s'ha configurat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2.</translation>
|
||||
<translation><h1>La configuració ha fallat.</h1><br/>No s'ha configurat %1 a l'ordinador.<br/>El missatge d'error ha estat el següent: %2.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="139"/>
|
||||
@ -1251,7 +1251,7 @@ L'instal·lador es tancarà i tots els canvis es perdran.</translation>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="143"/>
|
||||
<source>The installer is not running with administrator rights.</source>
|
||||
<translation>L'instal·lador no s'ha executat amb privilegis d'administrador.</translation>
|
||||
<translation>L'instal·lador no s'executa amb privilegis d'administrador.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/GeneralRequirements.cpp" line="152"/>
|
||||
@ -1272,7 +1272,7 @@ L'instal·lador es tancarà i tots els canvis es perdran.</translation>
|
||||
<location filename="../src/modules/oemid/IDJob.cpp" line="59"/>
|
||||
<location filename="../src/modules/oemid/IDJob.cpp" line="67"/>
|
||||
<source>OEM Batch Identifier</source>
|
||||
<translation>Identificador de lots OEM</translation>
|
||||
<translation>Identificador de lots d'OEM</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/IDJob.cpp" line="48"/>
|
||||
@ -1407,28 +1407,28 @@ L'instal·lador es tancarà i tots els canvis es perdran.</translation>
|
||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="122"/>
|
||||
<source><strong>%1 driver</strong><br/>by %2</source>
|
||||
<extracomment>%1 is an untranslatable product name, example: Creative Audigy driver</extracomment>
|
||||
<translation><strong>%1 controlador</strong><br/>de %2</translation>
|
||||
<translation><strong>Controlador %1</strong><br/>de %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="129"/>
|
||||
<source><strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font></source>
|
||||
<extracomment>%1 is usually a vendor name, example: Nvidia graphics driver</extracomment>
|
||||
<translation><strong>%1 controlador gràfic</strong><br/><font color="Grey">de %2</font></translation>
|
||||
<translation><strong>Controlador gràfic %1</strong><br/><font color="Grey">de %2</font></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="135"/>
|
||||
<source><strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font></source>
|
||||
<translation><strong>%1 connector del navegador</strong><br/><font color="Grey">de %2</font></translation>
|
||||
<translation><strong>Connector del navegador %1</strong><br/><font color="Grey">de %2</font></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="141"/>
|
||||
<source><strong>%1 codec</strong><br/><font color="Grey">by %2</font></source>
|
||||
<translation><strong>%1 còdec</strong><br/><font color="Grey">de %2</font></translation>
|
||||
<translation><strong>Còdec %1</strong><br/><font color="Grey">de %2</font></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="147"/>
|
||||
<source><strong>%1 package</strong><br/><font color="Grey">by %2</font></source>
|
||||
<translation><strong>%1 paquet</strong><br/><font color="Grey">de %2</font></translation>
|
||||
<translation><strong>Paquet %1</strong><br/><font color="Grey">de %2</font></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="153"/>
|
||||
@ -2571,12 +2571,12 @@ Sortida:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="118"/>
|
||||
<source>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</source>
|
||||
<translation>Aquest ordinador no satisfà alguns dels requisits recomanats per configurar-hi %1.<br/>La configuració pot continuar, però algunes característiques podrien estar desactivades.</translation>
|
||||
<translation>Aquest ordinador no satisfà alguns dels requisits recomanats per configurar-hi %1.<br/>La configuració pot continuar, però algunes característiques podrien estar inhabilitades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="122"/>
|
||||
<source>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</source>
|
||||
<translation>Aquest ordinador no satisfà alguns dels requisits recomanats per instal·lar-hi %1.<br/>La instal·lació pot continuar, però algunes característiques podrien estar desactivades.</translation>
|
||||
<translation>Aquest ordinador no satisfà alguns dels requisits recomanats per instal·lar-hi %1.<br/>La instal·lació pot continuar, però algunes característiques podrien estar inhabilitades.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="160"/>
|
||||
|
@ -99,12 +99,12 @@
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="106"/>
|
||||
<source>Reload Stylesheet</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Genindlæs stilark</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="113"/>
|
||||
<source>Widget Tree</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Widgettræ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="233"/>
|
||||
@ -159,12 +159,12 @@
|
||||
<message>
|
||||
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/>
|
||||
<source>Run command '%1' in target system.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kør kommandoen '%1' i målsystemet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/>
|
||||
<source> Run command '%1'.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation> Kør kommandoen '%1'.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamares/ProcessJob.cpp" line="59"/>
|
||||
|
@ -466,7 +466,7 @@ Saldrá del instalador y se perderán todos los cambios.</translation>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="996"/>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1082"/>
|
||||
<source>Current:</source>
|
||||
<translation>Corriente</translation>
|
||||
<translation>Actual:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="827"/>
|
||||
|
@ -267,7 +267,7 @@
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="193"/>
|
||||
<source>%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.</source>
|
||||
<translation>%1 はインストールできません。Calamares はすべてのモジュールをロードすることをできませんでした。これは、Calamares のこのディストリビューションでの使用法による問題です。</translation>
|
||||
<translation>%1 をインストールできません。Calamares はすべてのモジュールをロードすることをできませんでした。これは、Calamares のこのディストリビューションでの使用法による問題です。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="198"/>
|
||||
@ -318,7 +318,7 @@
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="402"/>
|
||||
<source>Do you really want to cancel the current setup process?
|
||||
The setup program will quit and all changes will be lost.</source>
|
||||
<translation>本当に現在のセットアップのプロセルを中止しますか?
|
||||
<translation>本当に現在のセットアップのプロセスを中止しますか?
|
||||
すべての変更が取り消されます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -351,7 +351,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="265"/>
|
||||
<source>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></source>
|
||||
<translation>%1 インストーラーは %2 をインストールするためにディスクの内容を変更しようとします。<br/><strong>これらの変更は取り消しできなくなります。</strong></translation>
|
||||
<translation>%1 インストーラーは %2 をインストールするためディスクの内容を変更しようとしています。<br/><strong>これらの変更は取り消せません。</strong></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/>
|
||||
@ -506,7 +506,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1264"/>
|
||||
<source>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.</source>
|
||||
<translation>このストレージデバイスは、オペレーティングシステムを持っていないようです。どうしますか?<br/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。</translation>
|
||||
<translation>このストレージデバイスにはオペレーティングシステムが存在しないようです。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1269"/>
|
||||
@ -519,7 +519,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1297"/>
|
||||
<source>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.</source>
|
||||
<translation>このストレージデバイスは %1 を有しています。どうしますか?<br/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。</translation>
|
||||
<translation>このストレージデバイスには %1 が存在します。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1501"/>
|
||||
@ -565,12 +565,12 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1321"/>
|
||||
<source>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.</source>
|
||||
<translation>この記憶装置は、すでにオペレーティングシステムが存在します。どうしますか?<br/>ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。</translation>
|
||||
<translation>このストレージデバイスにはすでにオペレーティングシステムが存在します。何を行いますか?<br/>ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1347"/>
|
||||
<source>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.</source>
|
||||
<translation>このストレージデバイスには、複数のオペレーティングシステムが存在します。どうしますか?<br />ストレージデバイスに対する変更が実施される前に、変更点をレビューし、確認することができます。</translation>
|
||||
<translation>このストレージデバイスには複数のオペレーティングシステムが存在します。何を行いますか?<br />ストレージデバイスに対する変更を行う前に、変更点をレビューし、確認することができます。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -734,7 +734,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="67"/>
|
||||
<source>Creating new %1 partition on %2.</source>
|
||||
<translation>%2 上に新しく %1 パーティションを作成中</translation>
|
||||
<translation>%2 に新しく %1 パーティションを作成中</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="79"/>
|
||||
@ -775,22 +775,22 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="47"/>
|
||||
<source>Create new %1 partition table on %2.</source>
|
||||
<translation>%2 上に新しく %1 パーティションテーブルを作成</translation>
|
||||
<translation>%2 に新しく %1 パーティションテーブルを作成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="54"/>
|
||||
<source>Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3).</source>
|
||||
<translation><strong>%2</strong> (%3) 上に新しく <strong>%1</strong> パーティションテーブルを作成</translation>
|
||||
<translation><strong>%2</strong> (%3) に新しく <strong>%1</strong> パーティションテーブルを作成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="64"/>
|
||||
<source>Creating new %1 partition table on %2.</source>
|
||||
<translation>%2 上に新しく %1 パーティションテーブルを作成中</translation>
|
||||
<translation>%2 に新しく %1 パーティションテーブルを作成中</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="82"/>
|
||||
<source>The installer failed to create a partition table on %1.</source>
|
||||
<translation>インストーラーは%1 上でのパーティションテーブルの作成に失敗しました。</translation>
|
||||
<translation>インストーラーは%1 へのパーティションテーブルの作成に失敗しました。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -929,12 +929,12 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="132"/>
|
||||
<source><br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment.</source>
|
||||
<translation><br><br>これは <strong>EFI</ strong> ブート環境から起動する現在のシステムで推奨されるパーティションテーブルの種類です。</translation>
|
||||
<translation><br><br>これは <strong>EFI</strong> ブート環境から起動する現在のシステムで推奨されるパーティションテーブルの種類です。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/DeviceInfoWidget.cpp" line="138"/>
|
||||
<source><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.</source>
|
||||
<translation><br><br>このパーティションテーブルの種類は<strong>BIOS</strong> ブート環境から起動する古いシステムにおいてのみ望ましいものです。他の多くの場合ではGPTが推奨されます。<br><br><strong>警告:</strong> MBR パーティションテーブルは時代遅れのMS-DOS時代の標準です。<br>わずか 4 つだけの<em>プライマリ</em>パーティションが作成され、そのうち1つについては、多くの<em>論理</em>パーティションを含む<em>拡張</em>パーティションにすることができます。</translation>
|
||||
<translation><br><br>このパーティションテーブルの種類は<strong>BIOS</strong> ブート環境から起動する古いシステムにおいてのみ推奨されます。他のほとんどの場合ではGPTが推奨されます。<br><br><strong>警告:</strong> MBR パーティションテーブルは時代遅れのMS-DOS時代の標準です。<br>作成できる<em>プライマリ</em>パーティションは4つだけです。そのうち1つは<em>拡張</em>パーティションになることができ、そこには多くの<em>論理</em>パーティションを含むことができます。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1273,7 +1273,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<location filename="../src/modules/oemid/IDJob.cpp" line="59"/>
|
||||
<location filename="../src/modules/oemid/IDJob.cpp" line="67"/>
|
||||
<source>OEM Batch Identifier</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>OEMのバッチID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/IDJob.cpp" line="48"/>
|
||||
@ -1348,7 +1348,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="41"/>
|
||||
<source>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>.</source>
|
||||
<translation>システムロケールの設定はコマンドラインやインターフェース上での言語や文字の表示に影響をおよぼします。<br/>現在の設定 <strong>%1</strong>.</translation>
|
||||
<translation>システムロケールの設定はコマンドラインやインターフェースでの言語や文字の表示に影響をおよぼします。<br/>現在の設定 <strong>%1</strong>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/>
|
||||
@ -1550,17 +1550,17 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/OEMPage.ui" line="28"/>
|
||||
<source>Ba&tch:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>バッチ (&)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/OEMPage.ui" line="38"/>
|
||||
<source><html><head/><body><p>Enter a batch-identifier here. This will be stored in the target system.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p>ここにバッチIDを入力してください。これはターゲットシステムに保存されます。</p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/OEMPage.ui" line="48"/>
|
||||
<source><html><head/><body><h1>OEM Configuration</h1><p>Calamares will use OEM settings while configuring the target system.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><h1>OEMの設定</h1><p>Calamaresはターゲットシステムの設定中にOEMの設定を使用します。</p></body></html></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1568,12 +1568,12 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/OEMViewStep.cpp" line="121"/>
|
||||
<source>OEM Configuration</source>
|
||||
<translation>OEM設定</translation>
|
||||
<translation>OEMの設定</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/oemid/OEMViewStep.cpp" line="126"/>
|
||||
<source>Set the OEM Batch Identifier to <code>%1</code>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>OEMのバッチIDを <code>%1</code> に設定してください。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1862,7 +1862,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/users/page_usersetup.ui" line="440"/>
|
||||
<source><small>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</small></source>
|
||||
<translation>確認のため、同じパスワードを二回入力して下さい。最低8字で、文字・数値・句読点を含めれば、強いパスワードになります。また、パスワードを定期的に変更することを変更してください。</translation>
|
||||
<translation><small>確認のため、同じパスワードを2回入力して下さい。8文字以上で、アルファベット・数字・句読点を混ぜたものにすれば強いパスワードになります。パスワードは定期的に変更してください。</small></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/users/page_usersetup.ui" line="226"/>
|
||||
@ -2039,7 +2039,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="209"/>
|
||||
<source>Are you sure you want to create a new partition table on %1?</source>
|
||||
<translation>%1 上で新しいパーティションテーブルを作成します。よろしいですか?</translation>
|
||||
<translation>%1 に新しいパーティションテーブルを作成します。よろしいですか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="238"/>
|
||||
@ -2102,7 +2102,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="212"/>
|
||||
<source><strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2).</source>
|
||||
<translation>ディスク <strong>%1</strong> (%2) 上で <strong>手動で</strong>パーティショニングする。</translation>
|
||||
<translation>ディスク <strong>%1</strong> (%2) に <strong>手動で</strong>パーティショニングする。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="220"/>
|
||||
@ -2152,12 +2152,12 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="650"/>
|
||||
<source>has at least one disk device available.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>少なくとも1枚のディスクは使用可能。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="651"/>
|
||||
<source>There are no partitons to install on.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>インストールするパーティションがありません。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2184,7 +2184,7 @@ The installer will quit and all changes will be lost.</source>
|
||||
<message>
|
||||
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="70"/>
|
||||
<source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>KDE Plasma デスクトップの外観を選んでください。この作業はスキップでき、インストール後に外観を設定することができます。外観を選択し、クリックすることにより外観のプレビューが表示されます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="76"/>
|
||||
@ -2328,12 +2328,12 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/partition/gui/PartitionDialogHelpers.cpp" line="47"/>
|
||||
<source>(no mount point)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>(マウントポイントなし)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamaresui/modulesystem/RequirementsChecker.cpp" line="62"/>
|
||||
<source>Requirements checking for module <i>%1</i> is complete.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>モジュール <i>%1</i> に必要なパッケージの確認が完了しました。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libcalamares/locale/Label.cpp" line="46"/>
|
||||
@ -2517,12 +2517,12 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="55"/>
|
||||
<source>Resize <strong>%2MiB</strong> partition <strong>%1</strong> to <strong>%3MiB</strong>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation> <strong>%2MiB</strong> のパーティション <strong>%1</strong> を <strong>%3MiB</strong>にサイズ変更。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="66"/>
|
||||
<source>Resizing %2MiB partition %1 to %3MiB.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation> %2MiB のパーティション %1 を %3MiB にサイズ変更中。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/ResizePartitionJob.cpp" line="85"/>
|
||||
@ -2562,7 +2562,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="96"/>
|
||||
<source>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>このコンピュータは %1 をセットアップするための最低要件を満たしていません。<br/>セットアップは続行できません。 <a href="#details">詳細...</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="100"/>
|
||||
@ -2572,7 +2572,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="118"/>
|
||||
<source>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>このコンピュータは、 %1 をセットアップするための推奨条件をいくつか満たしていません。<br/>インストールは続行しますが、一部の機能が無効になる場合があります。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="122"/>
|
||||
@ -2582,7 +2582,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="160"/>
|
||||
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
||||
<translation>このプログラムはあなたにいくつか質問をして、コンピュータ上で %2 を設定します。</translation>
|
||||
<translation>このプログラムはあなたにいくつか質問をして、コンピュータに %2 を設定します。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="181"/>
|
||||
@ -2678,12 +2678,12 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="52"/>
|
||||
<source>Set flags on %1MiB %2 partition.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1MiB %2 パーティションにフラグを設定。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="56"/>
|
||||
<source>Set flags on new partition.</source>
|
||||
<translation>新しいパーティション上にフラグを設定。</translation>
|
||||
<translation>新しいパーティションにフラグを設定。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="67"/>
|
||||
@ -2693,22 +2693,22 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="71"/>
|
||||
<source>Clear flags on %1MiB <strong>%2</strong> partition.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1MiB <strong>%2</strong> パーティション上のフラグを消去。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="85"/>
|
||||
<source>Flag %1MiB <strong>%2</strong> partition as <strong>%3</strong>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1MiB <strong>%2</strong> パーティションに <strong>%3</strong> のフラグを設定。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="107"/>
|
||||
<source>Clearing flags on %1MiB <strong>%2</strong> partition.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1MiB <strong>%2</strong> パーティション上のフラグを消去しています。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="121"/>
|
||||
<source>Setting flags <strong>%3</strong> on %1MiB <strong>%2</strong> partition.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1MiB <strong>%2</strong> パーティションに <strong>%3</strong> フラグを設定しています。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="75"/>
|
||||
@ -2738,12 +2738,12 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="115"/>
|
||||
<source>Setting flags <strong>%2</strong> on partition <strong>%1</strong>.</source>
|
||||
<translation>パーティション <strong>%1</strong> 上に フラグ<strong>%2</strong>を設定。</translation>
|
||||
<translation>パーティション <strong>%1</strong> に フラグ<strong>%2</strong>を設定。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="127"/>
|
||||
<source>Setting flags <strong>%1</strong> on new partition.</source>
|
||||
<translation>新しいパーティション上に <strong>%1</strong> フラグを設定しています。</translation>
|
||||
<translation>新しいパーティションに <strong>%1</strong> フラグを設定しています。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/partition/jobs/SetPartitionFlagsJob.cpp" line="144"/>
|
||||
@ -2854,7 +2854,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/summary/SummaryPage.cpp" line="57"/>
|
||||
<source>This is an overview of what will happen once you start the setup procedure.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>これはセットアップを開始した時に起こることの概要です。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/summary/SummaryPage.cpp" line="60"/>
|
||||
@ -2978,12 +2978,12 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/users/UsersPage.cpp" line="120"/>
|
||||
<source><small>If more than one person will use this computer, you can create multiple accounts after setup.</small></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><small>もし複数の人間がこのコンピュータを使用する場合、セットアップの後で複数のアカウントを作成できます。</small></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/users/UsersPage.cpp" line="126"/>
|
||||
<source><small>If more than one person will use this computer, you can create multiple accounts after installation.</small></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><small>もし複数の人間がこのコンピュータを使用する場合、インストールの後で複数のアカウントを作成できます。</small></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/users/UsersPage.cpp" line="317"/>
|
||||
@ -3124,7 +3124,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="71"/>
|
||||
<source><h1>Welcome to the Calamares setup program for %1.</h1></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><h1>%1 Calamares セットアッププログラムにようこそ</h1></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="72"/>
|
||||
@ -3134,7 +3134,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="90"/>
|
||||
<source>About %1 setup</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 セットアップについて</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="91"/>
|
||||
@ -3144,7 +3144,7 @@ Output:
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="94"/>
|
||||
<source><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2019 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/>
|
||||
|
Binary file not shown.
@ -5,8 +5,8 @@
|
||||
#
|
||||
# Translators:
|
||||
# UTUMI Hirosi <utuhiro78@yahoo.co.jp>, 2019
|
||||
# Takefumi Nagata, 2019
|
||||
# ブラシックデービッド, 2019
|
||||
# Takefumi Nagata, 2019
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-06-18 15:54+0200\n"
|
||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||
"Last-Translator: ブラシックデービッド, 2019\n"
|
||||
"Last-Translator: Takefumi Nagata, 2019\n"
|
||||
"Language-Team: Japanese (https://www.transifex.com/calamares/teams/20061/ja/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -29,7 +29,7 @@ msgstr "GRUBを設定にします。"
|
||||
|
||||
#: src/modules/mount/main.py:38
|
||||
msgid "Mounting partitions."
|
||||
msgstr ""
|
||||
msgstr "パーティションのマウント。"
|
||||
|
||||
#: src/modules/mount/main.py:150 src/modules/initcpiocfg/main.py:187
|
||||
#: src/modules/initcpiocfg/main.py:191
|
||||
@ -207,7 +207,7 @@ msgstr "mkinitcpioを設定中"
|
||||
#: src/modules/openrcdmcryptcfg/main.py:83 src/modules/fstab/main.py:317
|
||||
#: src/modules/localecfg/main.py:145 src/modules/networkcfg/main.py:49
|
||||
msgid "No root mount point is given for <pre>{!s}</pre> to use."
|
||||
msgstr ""
|
||||
msgstr " <pre>{!s}</pre> を使用するのにルートマウントポイントが与えられていません。"
|
||||
|
||||
#: src/modules/initcpio/main.py:33
|
||||
msgid "Creating initramfs with mkinitcpio."
|
||||
@ -222,6 +222,7 @@ msgid ""
|
||||
"Process <pre>mkinitcpio</pre> failed with error code {!s}. The command was "
|
||||
"<pre>{!s}</pre>."
|
||||
msgstr ""
|
||||
"<pre>mkinitcpio</pre> プロセスがエラーコード {!s} により失敗しました。 コマンドは <pre>{!s}</pre>でした。"
|
||||
|
||||
#: src/modules/luksopenswaphookcfg/main.py:35
|
||||
msgid "Configuring encrypted swap."
|
||||
@ -309,7 +310,7 @@ msgstr "ブートローダーをインストール"
|
||||
|
||||
#: src/modules/removeuser/main.py:34
|
||||
msgid "Remove live user from target system"
|
||||
msgstr ""
|
||||
msgstr "ターゲットシステムからliveユーザーを消去"
|
||||
|
||||
#: src/modules/initramfs/main.py:35
|
||||
msgid "Creating initramfs."
|
||||
@ -317,7 +318,7 @@ msgstr "initramfsを作成中"
|
||||
|
||||
#: src/modules/initramfs/main.py:49
|
||||
msgid "Failed to run update-initramfs on the target"
|
||||
msgstr ""
|
||||
msgstr "ターゲット上の initramfs のアップデートに失敗"
|
||||
|
||||
#: src/modules/initramfs/main.py:50 src/modules/dracut/main.py:59
|
||||
msgid "The exit code was {}"
|
||||
@ -325,7 +326,7 @@ msgstr "停止コードは {} でした"
|
||||
|
||||
#: src/modules/hwclock/main.py:35
|
||||
msgid "Setting hardware clock."
|
||||
msgstr ""
|
||||
msgstr "ハードウェアクロックの設定"
|
||||
|
||||
#: src/modules/dracut/main.py:36
|
||||
msgid "Creating initramfs with dracut."
|
||||
@ -333,7 +334,7 @@ msgstr "dracutとinitramfsを作成中"
|
||||
|
||||
#: src/modules/dracut/main.py:58
|
||||
msgid "Failed to run dracut on the target"
|
||||
msgstr ""
|
||||
msgstr "ターゲット上で dracut の実行に失敗"
|
||||
|
||||
#: src/modules/initramfscfg/main.py:41
|
||||
msgid "Configuring initramfs."
|
||||
@ -353,7 +354,7 @@ msgstr "暗号化したrootfsセットアップエラー"
|
||||
|
||||
#: src/modules/luksbootkeyfile/main.py:75
|
||||
msgid "Rootfs partition {!s} is LUKS but no passphrase found."
|
||||
msgstr ""
|
||||
msgstr "Rootfs のパーティションは {!s} LUKS ですが、パスフレーズが見つかりません。"
|
||||
|
||||
#: src/modules/fstab/main.py:38
|
||||
msgid "Writing fstab."
|
||||
|
@ -29,6 +29,6 @@ enum class ModuleAction : char
|
||||
Exec
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace Calamares
|
||||
|
||||
#endif
|
||||
|
@ -19,9 +19,9 @@
|
||||
|
||||
#include "CppJobModule.h"
|
||||
|
||||
#include "utils/PluginFactory.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "CppJob.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/PluginFactory.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QPluginLoader>
|
||||
@ -62,10 +62,10 @@ CppJobModule::loadSelf()
|
||||
cDebug() << Q_FUNC_INFO << m_loader->errorString();
|
||||
return;
|
||||
}
|
||||
// cDebug() << "CppJobModule loading self for instance" << instanceKey()
|
||||
// << "\nCppJobModule at address" << this
|
||||
// << "\nCalamares::PluginFactory at address" << pf
|
||||
// << "\nCppJob at address" << cppJob;
|
||||
// cDebug() << "CppJobModule loading self for instance" << instanceKey()
|
||||
// << "\nCppJobModule at address" << this
|
||||
// << "\nCalamares::PluginFactory at address" << pf
|
||||
// << "\nCppJob at address" << cppJob;
|
||||
|
||||
cppJob->setModuleInstanceKey( instanceKey() );
|
||||
cppJob->setConfigurationMap( m_configurationMap );
|
||||
@ -97,7 +97,7 @@ CppJobModule::initFrom( const QVariantMap& moduleDescriptor )
|
||||
// If a load path is not specified, we look for a plugin to load in the directory.
|
||||
if ( load.isEmpty() || !QLibrary::isLibrary( load ) )
|
||||
{
|
||||
const QStringList ls = directory.entryList( QStringList{ "*.so" } );
|
||||
const QStringList ls = directory.entryList( QStringList { "*.so" } );
|
||||
if ( !ls.isEmpty() )
|
||||
{
|
||||
for ( QString entry : ls )
|
||||
@ -126,4 +126,4 @@ CppJobModule::~CppJobModule()
|
||||
delete m_loader;
|
||||
}
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
@ -21,8 +21,8 @@
|
||||
#ifndef CALAMARES_CPPJOBMODULE_H
|
||||
#define CALAMARES_CPPJOBMODULE_H
|
||||
|
||||
#include "UiDllMacro.h"
|
||||
#include "Module.h"
|
||||
#include "UiDllMacro.h"
|
||||
|
||||
class QPluginLoader;
|
||||
|
||||
@ -42,7 +42,7 @@ protected:
|
||||
void initFrom( const QVariantMap& moduleDescriptor ) override;
|
||||
|
||||
private:
|
||||
friend class Module; //so only the superclass can instantiate
|
||||
friend class Module; //so only the superclass can instantiate
|
||||
explicit CppJobModule();
|
||||
virtual ~CppJobModule() override;
|
||||
|
||||
@ -50,6 +50,6 @@ private:
|
||||
job_ptr m_job;
|
||||
};
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // CALAMARES_CPPJOBMODULE_H
|
||||
#endif // CALAMARES_CPPJOBMODULE_H
|
||||
|
@ -48,8 +48,7 @@ static const char EMERGENCY[] = "emergency";
|
||||
namespace Calamares
|
||||
{
|
||||
|
||||
Module::~Module()
|
||||
{}
|
||||
Module::~Module() {}
|
||||
|
||||
Module*
|
||||
Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
||||
@ -57,7 +56,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
||||
const QString& configFileName,
|
||||
const QString& moduleDirectory )
|
||||
{
|
||||
std::unique_ptr<Module> m;
|
||||
std::unique_ptr< Module > m;
|
||||
|
||||
QString typeString = moduleDescriptor.value( "type" ).toString();
|
||||
QString intfString = moduleDescriptor.value( "interface" ).toString();
|
||||
@ -70,7 +69,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
||||
if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) )
|
||||
{
|
||||
if ( intfString == "qtplugin" )
|
||||
{
|
||||
m.reset( new ViewModule() );
|
||||
}
|
||||
else if ( intfString == "pythonqt" )
|
||||
{
|
||||
#ifdef WITH_PYTHONQT
|
||||
@ -80,14 +81,20 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
cError() << "Bad interface" << intfString << "for module type" << typeString;
|
||||
}
|
||||
}
|
||||
else if ( typeString == "job" )
|
||||
{
|
||||
if ( intfString == "qtplugin" )
|
||||
{
|
||||
m.reset( new CppJobModule() );
|
||||
}
|
||||
else if ( intfString == "process" )
|
||||
{
|
||||
m.reset( new ProcessJobModule() );
|
||||
}
|
||||
else if ( intfString == "python" )
|
||||
{
|
||||
#ifdef WITH_PYTHON
|
||||
@ -97,22 +104,27 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
cError() << "Bad interface" << intfString << "for module type" << typeString;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cError() << "Bad module type" << typeString;
|
||||
}
|
||||
|
||||
if ( !m )
|
||||
{
|
||||
cError() << "Bad module type (" << typeString
|
||||
<< ") or interface string (" << intfString
|
||||
<< ") for module " << instanceId;
|
||||
cError() << "Bad module type (" << typeString << ") or interface string (" << intfString << ") for module "
|
||||
<< instanceId;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
QDir moduleDir( moduleDirectory );
|
||||
if ( moduleDir.exists() && moduleDir.isReadable() )
|
||||
{
|
||||
m->m_directory = moduleDir.absolutePath();
|
||||
}
|
||||
else
|
||||
{
|
||||
cError() << "Bad module directory" << moduleDirectory << "for" << instanceId;
|
||||
@ -141,22 +153,32 @@ moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, c
|
||||
QStringList paths;
|
||||
|
||||
if ( CalamaresUtils::isAppDataDirOverridden() )
|
||||
{
|
||||
paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
// If an absolute path is given, in debug mode, look for it
|
||||
// first. The case contains('/'), below, will add the absolute
|
||||
// path a second time, though.
|
||||
if ( assumeBuildDir && configFileName.startsWith( '/' ) )
|
||||
{
|
||||
paths << configFileName;
|
||||
}
|
||||
if ( assumeBuildDir )
|
||||
paths << QDir().absoluteFilePath(QString( "src/modules/%1/%2" ).arg( moduleName ).arg( configFileName ) );
|
||||
{
|
||||
paths << QDir().absoluteFilePath( QString( "src/modules/%1/%2" ).arg( moduleName ).arg( configFileName ) );
|
||||
}
|
||||
if ( assumeBuildDir && configFileName.contains( '/' ) )
|
||||
{
|
||||
paths << QDir().absoluteFilePath( configFileName );
|
||||
}
|
||||
|
||||
if ( CalamaresUtils::haveExtraDirs() )
|
||||
for ( auto s : CalamaresUtils::extraConfigDirs() )
|
||||
{
|
||||
paths << ( s + QString( "modules/%1" ).arg( configFileName ) );
|
||||
}
|
||||
|
||||
paths << QString( "/etc/calamares/modules/%1" ).arg( configFileName );
|
||||
paths << CalamaresUtils::appDataDir().absoluteFilePath( QString( "modules/%1" ).arg( configFileName ) );
|
||||
@ -165,10 +187,10 @@ moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, c
|
||||
return paths;
|
||||
}
|
||||
|
||||
void
|
||||
Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception
|
||||
void Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception
|
||||
{
|
||||
QStringList configCandidates = moduleConfigurationCandidates( Settings::instance()->debugMode(), m_name, configFileName );
|
||||
QStringList configCandidates
|
||||
= moduleConfigurationCandidates( Settings::instance()->debugMode(), m_name, configFileName );
|
||||
for ( const QString& path : configCandidates )
|
||||
{
|
||||
QFile configFile( path );
|
||||
@ -192,9 +214,8 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex
|
||||
|
||||
cDebug() << "Loaded module configuration" << path;
|
||||
m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap();
|
||||
m_emergency = m_maybe_emergency
|
||||
&& m_configurationMap.contains( EMERGENCY )
|
||||
&& m_configurationMap[ EMERGENCY ].toBool();
|
||||
m_emergency = m_maybe_emergency && m_configurationMap.contains( EMERGENCY )
|
||||
&& m_configurationMap[ EMERGENCY ].toBool();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -235,7 +256,7 @@ Module::typeString() const
|
||||
{
|
||||
switch ( type() )
|
||||
{
|
||||
case Type::Job:
|
||||
case Type::Job:
|
||||
return "Job Module";
|
||||
case Type::View:
|
||||
return "View Module";
|
||||
@ -249,7 +270,7 @@ Module::interfaceString() const
|
||||
{
|
||||
switch ( interface() )
|
||||
{
|
||||
case Interface::Process:
|
||||
case Interface::Process:
|
||||
return "External process";
|
||||
case Interface::Python:
|
||||
return "Python (Boost.Python)";
|
||||
@ -271,7 +292,8 @@ Module::configurationMap()
|
||||
|
||||
Module::Module()
|
||||
: m_loaded( false )
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
@ -279,7 +301,9 @@ Module::initFrom( const QVariantMap& moduleDescriptor )
|
||||
{
|
||||
m_name = moduleDescriptor.value( "name" ).toString();
|
||||
if ( moduleDescriptor.contains( EMERGENCY ) )
|
||||
{
|
||||
m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool();
|
||||
}
|
||||
}
|
||||
|
||||
RequirementsList
|
||||
@ -288,4 +312,4 @@ Module::checkRequirements()
|
||||
return RequirementsList();
|
||||
}
|
||||
|
||||
} //ns
|
||||
} // namespace Calamares
|
||||
|
@ -66,8 +66,8 @@ public:
|
||||
*/
|
||||
enum class Interface
|
||||
{
|
||||
QtPlugin, // Jobs or Views
|
||||
Python, // Jobs only
|
||||
QtPlugin, // Jobs or Views
|
||||
Python, // Jobs only
|
||||
Process, // Deprecated interface
|
||||
PythonQt // Views only, available as enum even if PythonQt isn't used
|
||||
};
|
||||
@ -141,10 +141,7 @@ public:
|
||||
* @brief isLoaded reports on the loaded status of a module.
|
||||
* @return true if the module's loading phase has finished, otherwise false.
|
||||
*/
|
||||
bool isLoaded() const
|
||||
{
|
||||
return m_loaded;
|
||||
}
|
||||
bool isLoaded() const { return m_loaded; }
|
||||
|
||||
/**
|
||||
* @brief loadSelf initialized the module.
|
||||
@ -161,10 +158,7 @@ public:
|
||||
* are not run (in the common case where there is only
|
||||
* one exec block, this doesn't really matter).
|
||||
*/
|
||||
bool isEmergency() const
|
||||
{
|
||||
return m_emergency;
|
||||
}
|
||||
bool isEmergency() const { return m_emergency; }
|
||||
|
||||
/**
|
||||
* @brief jobs returns any jobs exposed by this module.
|
||||
@ -194,16 +188,15 @@ protected:
|
||||
bool m_maybe_emergency = false; // Based on the module.desc
|
||||
|
||||
private:
|
||||
void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception
|
||||
void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception
|
||||
|
||||
QString m_name;
|
||||
QString m_directory;
|
||||
QString m_instanceId;
|
||||
|
||||
friend void ::operator>>( const QVariantMap& moduleDescriptor,
|
||||
Calamares::Module* m );
|
||||
friend void ::operator>>( const QVariantMap& moduleDescriptor, Calamares::Module* m );
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // CALAMARES_MODULE_H
|
||||
#endif // CALAMARES_MODULE_H
|
||||
|
@ -56,7 +56,9 @@ ModuleManager::~ModuleManager()
|
||||
{
|
||||
// The map is populated with Module::fromDescriptor(), which allocates on the heap.
|
||||
for ( auto moduleptr : m_loadedModulesByInstanceKey )
|
||||
{
|
||||
delete moduleptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -89,15 +91,17 @@ ModuleManager::doInit()
|
||||
bool success = currentDir.cd( subdir );
|
||||
if ( success )
|
||||
{
|
||||
QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc") ) );
|
||||
QFileInfo descriptorFileInfo( currentDir.absoluteFilePath( QLatin1Literal( "module.desc" ) ) );
|
||||
if ( !descriptorFileInfo.exists() )
|
||||
{
|
||||
cDebug() << "ModuleManager expected descriptor is missing:" << descriptorFileInfo.absoluteFilePath();
|
||||
cDebug() << "ModuleManager expected descriptor is missing:"
|
||||
<< descriptorFileInfo.absoluteFilePath();
|
||||
continue;
|
||||
}
|
||||
if ( !descriptorFileInfo.isReadable() )
|
||||
{
|
||||
cDebug() << "ModuleManager descriptor file is unreadable:" << descriptorFileInfo.absoluteFilePath();
|
||||
cDebug() << "ModuleManager descriptor file is unreadable:"
|
||||
<< descriptorFileInfo.absoluteFilePath();
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -105,8 +109,8 @@ ModuleManager::doInit()
|
||||
QVariantMap moduleDescriptorMap = CalamaresUtils::loadYaml( descriptorFileInfo, &ok );
|
||||
QString moduleName = ok ? moduleDescriptorMap.value( "name" ).toString() : QString();
|
||||
|
||||
if ( ok && ( moduleName == currentDir.dirName() ) &&
|
||||
!m_availableDescriptorsByModuleName.contains( moduleName ) )
|
||||
if ( ok && ( moduleName == currentDir.dirName() )
|
||||
&& !m_availableDescriptorsByModuleName.contains( moduleName ) )
|
||||
{
|
||||
m_availableDescriptorsByModuleName.insert( moduleName, moduleDescriptorMap );
|
||||
m_moduleDirectoriesByModuleName.insert( moduleName,
|
||||
@ -155,16 +159,16 @@ ModuleManager::moduleInstance( const QString& instanceKey )
|
||||
*
|
||||
* @return -1 on failure, otherwise index of the instance that matches.
|
||||
*/
|
||||
static int findCustomInstance( const Settings::InstanceDescriptionList& customInstances,
|
||||
const QString& module,
|
||||
const QString& id )
|
||||
static int
|
||||
findCustomInstance( const Settings::InstanceDescriptionList& customInstances, const QString& module, const QString& id )
|
||||
{
|
||||
for ( int i = 0; i < customInstances.count(); ++i )
|
||||
{
|
||||
const auto& thisInstance = customInstances[ i ];
|
||||
if ( thisInstance.value( "module" ) == module &&
|
||||
thisInstance.value( "id" ) == id )
|
||||
if ( thisInstance.value( "module" ) == module && thisInstance.value( "id" ) == id )
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@ -173,26 +177,23 @@ static int findCustomInstance( const Settings::InstanceDescriptionList& customIn
|
||||
void
|
||||
ModuleManager::loadModules()
|
||||
{
|
||||
QTimer::singleShot( 0, this, [ this ]()
|
||||
{
|
||||
QTimer::singleShot( 0, this, [this]() {
|
||||
QStringList failedModules = checkDependencies();
|
||||
Settings::InstanceDescriptionList customInstances =
|
||||
Settings::instance()->customModuleInstances();
|
||||
Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances();
|
||||
|
||||
const auto modulesSequence = failedModules.isEmpty() ? Settings::instance()->modulesSequence() : Settings::ModuleSequence();
|
||||
const auto modulesSequence
|
||||
= failedModules.isEmpty() ? Settings::instance()->modulesSequence() : Settings::ModuleSequence();
|
||||
for ( const auto& modulePhase : modulesSequence )
|
||||
{
|
||||
ModuleAction currentAction = modulePhase.first;
|
||||
|
||||
foreach ( const QString& moduleEntry,
|
||||
modulePhase.second )
|
||||
foreach ( const QString& moduleEntry, modulePhase.second )
|
||||
{
|
||||
QStringList moduleEntrySplit = moduleEntry.split( '@' );
|
||||
QString moduleName;
|
||||
QString instanceId;
|
||||
QString configFileName;
|
||||
if ( moduleEntrySplit.length() < 1 ||
|
||||
moduleEntrySplit.length() > 2 )
|
||||
if ( moduleEntrySplit.length() < 1 || moduleEntrySplit.length() > 2 )
|
||||
{
|
||||
cError() << "Wrong module entry format for module" << moduleEntry;
|
||||
failedModules.append( moduleEntry );
|
||||
@ -202,8 +203,8 @@ ModuleManager::loadModules()
|
||||
instanceId = moduleEntrySplit.last();
|
||||
configFileName = QString( "%1.conf" ).arg( moduleName );
|
||||
|
||||
if ( !m_availableDescriptorsByModuleName.contains( moduleName ) ||
|
||||
m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() )
|
||||
if ( !m_availableDescriptorsByModuleName.contains( moduleName )
|
||||
|| m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() )
|
||||
{
|
||||
cError() << "Module" << moduleName << "not found in module search paths."
|
||||
<< Logger::DebugList( m_paths );
|
||||
@ -211,13 +212,15 @@ ModuleManager::loadModules()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( moduleName != instanceId ) //means this is a custom instance
|
||||
if ( moduleName != instanceId ) //means this is a custom instance
|
||||
{
|
||||
int found = findCustomInstance( customInstances, moduleName, instanceId );
|
||||
|
||||
if ( found > -1 )
|
||||
{
|
||||
configFileName = customInstances[ found ].value( "config" );
|
||||
else //ought to be a custom instance, but cannot find instance entry
|
||||
}
|
||||
else //ought to be a custom instance, but cannot find instance entry
|
||||
{
|
||||
cError() << "Custom instance" << moduleEntry << "not found in custom instances section.";
|
||||
failedModules.append( moduleEntry );
|
||||
@ -233,12 +236,9 @@ ModuleManager::loadModules()
|
||||
// exists and is valid, but that's the only thing that could fail
|
||||
// from this point on. -- Teo 8/2015
|
||||
|
||||
QString instanceKey = QString( "%1@%2" )
|
||||
.arg( moduleName )
|
||||
.arg( instanceId );
|
||||
QString instanceKey = QString( "%1@%2" ).arg( moduleName ).arg( instanceId );
|
||||
|
||||
Module* thisModule =
|
||||
m_loadedModulesByInstanceKey.value( instanceKey, nullptr );
|
||||
Module* thisModule = m_loadedModulesByInstanceKey.value( instanceKey, nullptr );
|
||||
if ( thisModule && !thisModule->isLoaded() )
|
||||
{
|
||||
cError() << "Module" << instanceKey << "exists but not loaded.";
|
||||
@ -247,14 +247,15 @@ ModuleManager::loadModules()
|
||||
}
|
||||
|
||||
if ( thisModule && thisModule->isLoaded() )
|
||||
{
|
||||
cDebug() << "Module" << instanceKey << "already loaded.";
|
||||
}
|
||||
else
|
||||
{
|
||||
thisModule =
|
||||
Module::fromDescriptor( m_availableDescriptorsByModuleName.value( moduleName ),
|
||||
instanceId,
|
||||
configFileName,
|
||||
m_moduleDirectoriesByModuleName.value( moduleName ) );
|
||||
thisModule = Module::fromDescriptor( m_availableDescriptorsByModuleName.value( moduleName ),
|
||||
instanceId,
|
||||
configFileName,
|
||||
m_moduleDirectoriesByModuleName.value( moduleName ) );
|
||||
if ( !thisModule )
|
||||
{
|
||||
cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName;
|
||||
@ -284,10 +285,9 @@ ModuleManager::loadModules()
|
||||
// thisModule. We now need to enqueue jobs info into an EVS.
|
||||
if ( currentAction == ModuleAction::Exec )
|
||||
{
|
||||
ExecutionViewStep* evs =
|
||||
qobject_cast< ExecutionViewStep* >(
|
||||
Calamares::ViewManager::instance()->viewSteps().last() );
|
||||
if ( !evs ) // If the last step is not an EVS, we must create it.
|
||||
ExecutionViewStep* evs
|
||||
= qobject_cast< ExecutionViewStep* >( Calamares::ViewManager::instance()->viewSteps().last() );
|
||||
if ( !evs ) // If the last step is not an EVS, we must create it.
|
||||
{
|
||||
evs = new ExecutionViewStep( ViewManager::instance() );
|
||||
ViewManager::instance()->addViewStep( evs );
|
||||
@ -303,7 +303,9 @@ ModuleManager::loadModules()
|
||||
emit modulesFailed( failedModules );
|
||||
}
|
||||
else
|
||||
{
|
||||
emit modulesLoaded();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@ -314,12 +316,12 @@ ModuleManager::checkRequirements()
|
||||
|
||||
QVector< Module* > modules( m_loadedModulesByInstanceKey.count() );
|
||||
int count = 0;
|
||||
for (const auto& module : m_loadedModulesByInstanceKey )
|
||||
for ( const auto& module : m_loadedModulesByInstanceKey )
|
||||
{
|
||||
modules[count++] = module;
|
||||
modules[ count++ ] = module;
|
||||
}
|
||||
|
||||
RequirementsChecker *rq = new RequirementsChecker( modules, this );
|
||||
RequirementsChecker* rq = new RequirementsChecker( modules, this );
|
||||
connect( rq, &RequirementsChecker::requirementsResult, this, &ModuleManager::requirementsResult );
|
||||
connect( rq, &RequirementsChecker::requirementsComplete, this, &ModuleManager::requirementsComplete );
|
||||
connect( rq, &RequirementsChecker::requirementsProgress, this, &ModuleManager::requirementsProgress );
|
||||
@ -332,10 +334,12 @@ static QStringList
|
||||
missingRequiredModules( const QStringList& required, const QMap< QString, QVariantMap >& available )
|
||||
{
|
||||
QStringList l;
|
||||
for( const QString& depName : required )
|
||||
for ( const QString& depName : required )
|
||||
{
|
||||
if ( !available.contains( depName ) )
|
||||
{
|
||||
l.append( depName );
|
||||
}
|
||||
}
|
||||
|
||||
return l;
|
||||
@ -352,10 +356,11 @@ ModuleManager::checkDependencies()
|
||||
do
|
||||
{
|
||||
somethingWasRemovedBecauseOfUnmetDependencies = false;
|
||||
for ( auto it = m_availableDescriptorsByModuleName.begin();
|
||||
it != m_availableDescriptorsByModuleName.end(); ++it )
|
||||
for ( auto it = m_availableDescriptorsByModuleName.begin(); it != m_availableDescriptorsByModuleName.end();
|
||||
++it )
|
||||
{
|
||||
QStringList unmet = missingRequiredModules( it->value( "requiredModules" ).toStringList(), m_availableDescriptorsByModuleName );
|
||||
QStringList unmet = missingRequiredModules( it->value( "requiredModules" ).toStringList(),
|
||||
m_availableDescriptorsByModuleName );
|
||||
|
||||
if ( unmet.count() > 0 )
|
||||
{
|
||||
@ -368,8 +373,7 @@ ModuleManager::checkDependencies()
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
while( somethingWasRemovedBecauseOfUnmetDependencies );
|
||||
} while ( somethingWasRemovedBecauseOfUnmetDependencies );
|
||||
|
||||
return failed;
|
||||
}
|
||||
@ -378,12 +382,13 @@ bool
|
||||
ModuleManager::checkDependencies( const Module& m )
|
||||
{
|
||||
bool allRequirementsFound = true;
|
||||
QStringList requiredModules = m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList();
|
||||
QStringList requiredModules
|
||||
= m_availableDescriptorsByModuleName[ m.name() ].value( "requiredModules" ).toStringList();
|
||||
|
||||
for ( const QString& required : requiredModules )
|
||||
{
|
||||
bool requirementFound = false;
|
||||
for( const Module* v : m_loadedModulesByInstanceKey )
|
||||
for ( const Module* v : m_loadedModulesByInstanceKey )
|
||||
if ( required == v->name() )
|
||||
{
|
||||
requirementFound = true;
|
||||
@ -399,4 +404,4 @@ ModuleManager::checkDependencies( const Module& m )
|
||||
return allRequirementsFound;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace Calamares
|
||||
|
@ -91,7 +91,7 @@ public:
|
||||
signals:
|
||||
void initDone();
|
||||
void modulesLoaded(); /// All of the modules were loaded successfully
|
||||
void modulesFailed( QStringList ); /// .. or not
|
||||
void modulesFailed( QStringList ); /// .. or not
|
||||
// Below, see RequirementsChecker documentation
|
||||
void requirementsComplete( bool );
|
||||
void requirementsResult( RequirementsList );
|
||||
@ -129,6 +129,6 @@ private:
|
||||
static ModuleManager* s_instance;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // MODULELOADER_H
|
||||
#endif // MODULELOADER_H
|
||||
|
@ -44,12 +44,11 @@ void
|
||||
ProcessJobModule::loadSelf()
|
||||
{
|
||||
if ( m_loaded )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_job = job_ptr( new ProcessJob( m_command,
|
||||
m_workingPath,
|
||||
m_runInChroot,
|
||||
m_secondsTimeout ) );
|
||||
m_job = job_ptr( new ProcessJob( m_command, m_workingPath, m_runInChroot, m_secondsTimeout ) );
|
||||
m_loaded = true;
|
||||
}
|
||||
|
||||
@ -69,17 +68,21 @@ ProcessJobModule::initFrom( const QVariantMap& moduleDescriptor )
|
||||
m_workingPath = directory.absolutePath();
|
||||
|
||||
if ( !moduleDescriptor.value( "command" ).toString().isEmpty() )
|
||||
{
|
||||
m_command = moduleDescriptor.value( "command" ).toString();
|
||||
}
|
||||
|
||||
m_secondsTimeout = 30;
|
||||
if ( moduleDescriptor.contains( "timeout" ) &&
|
||||
!moduleDescriptor.value( "timeout" ).isNull() )
|
||||
if ( moduleDescriptor.contains( "timeout" ) && !moduleDescriptor.value( "timeout" ).isNull() )
|
||||
{
|
||||
m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt();
|
||||
}
|
||||
|
||||
m_runInChroot = false;
|
||||
if ( moduleDescriptor.contains( "chroot" )&&
|
||||
!moduleDescriptor.value( "chroot" ).isNull() )
|
||||
if ( moduleDescriptor.contains( "chroot" ) && !moduleDescriptor.value( "chroot" ).isNull() )
|
||||
{
|
||||
m_runInChroot = moduleDescriptor.value( "chroot" ).toBool();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -87,11 +90,11 @@ ProcessJobModule::ProcessJobModule()
|
||||
: Module()
|
||||
, m_secondsTimeout( 30 )
|
||||
, m_runInChroot( false )
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
ProcessJobModule::~ProcessJobModule()
|
||||
{}
|
||||
ProcessJobModule::~ProcessJobModule() {}
|
||||
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
@ -51,6 +51,6 @@ private:
|
||||
job_ptr m_job;
|
||||
};
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // CALAMARES_PROCESSJOBMODULE_H
|
||||
#endif // CALAMARES_PROCESSJOBMODULE_H
|
||||
|
@ -45,7 +45,9 @@ void
|
||||
PythonJobModule::loadSelf()
|
||||
{
|
||||
if ( m_loaded )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_workingPath, m_configurationMap ) );
|
||||
m_loaded = true;
|
||||
@ -67,17 +69,19 @@ PythonJobModule::initFrom( const QVariantMap& moduleDescriptor )
|
||||
m_workingPath = directory.absolutePath();
|
||||
|
||||
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
|
||||
{
|
||||
m_scriptFileName = moduleDescriptor.value( "script" ).toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
PythonJobModule::PythonJobModule()
|
||||
: Module()
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
PythonJobModule::~PythonJobModule()
|
||||
{}
|
||||
PythonJobModule::~PythonJobModule() {}
|
||||
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
@ -48,6 +48,6 @@ private:
|
||||
job_ptr m_job;
|
||||
};
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // CALAMARES_PYTHONJOBMODULE_H
|
||||
#endif // CALAMARES_PYTHONJOBMODULE_H
|
||||
|
@ -20,15 +20,15 @@
|
||||
|
||||
#include "PythonQtViewModule.h"
|
||||
|
||||
#include "utils/Logger.h"
|
||||
#include "viewpages/ViewStep.h"
|
||||
#include "viewpages/PythonQtViewStep.h"
|
||||
#include "ViewManager.h"
|
||||
#include "CalamaresConfig.h"
|
||||
#include "viewpages/PythonQtGlobalStorageWrapper.h"
|
||||
#include "viewpages/PythonQtUtilsWrapper.h"
|
||||
#include "GlobalStorage.h"
|
||||
#include "JobQueue.h"
|
||||
#include "ViewManager.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "viewpages/PythonQtGlobalStorageWrapper.h"
|
||||
#include "viewpages/PythonQtUtilsWrapper.h"
|
||||
#include "viewpages/PythonQtViewStep.h"
|
||||
#include "viewpages/ViewStep.h"
|
||||
|
||||
#include <PythonQt.h>
|
||||
#include <PythonQt_QtAll.h>
|
||||
@ -65,11 +65,12 @@ PythonQtViewModule::loadSelf()
|
||||
if ( PythonQt::self() == nullptr )
|
||||
{
|
||||
if ( Py_IsInitialized() )
|
||||
PythonQt::init( PythonQt::IgnoreSiteModule |
|
||||
PythonQt::RedirectStdOut |
|
||||
PythonQt::PythonAlreadyInitialized );
|
||||
PythonQt::init( PythonQt::IgnoreSiteModule | PythonQt::RedirectStdOut
|
||||
| PythonQt::PythonAlreadyInitialized );
|
||||
else
|
||||
{
|
||||
PythonQt::init();
|
||||
}
|
||||
|
||||
PythonQt_QtAll::init();
|
||||
cDebug() << "Initializing PythonQt bindings."
|
||||
@ -81,8 +82,7 @@ PythonQtViewModule::loadSelf()
|
||||
|
||||
// We only do the following to force PythonQt to create a submodule
|
||||
// "calamares" for us to put our static objects in
|
||||
PythonQt::self()->registerClass( &::GlobalStorage::staticMetaObject,
|
||||
"calamares" );
|
||||
PythonQt::self()->registerClass( &::GlobalStorage::staticMetaObject, "calamares" );
|
||||
|
||||
// Get a PythonQtObjectPtr to the PythonQt.calamares submodule
|
||||
PythonQtObjectPtr pqtm = PythonQt::priv()->pythonQtModule();
|
||||
@ -90,39 +90,34 @@ PythonQtViewModule::loadSelf()
|
||||
|
||||
// Prepare GlobalStorage object, in module PythonQt.calamares
|
||||
if ( !s_gs )
|
||||
{
|
||||
s_gs = new ::GlobalStorage( Calamares::JobQueue::instance()->globalStorage() );
|
||||
}
|
||||
cala.addObject( "global_storage", s_gs );
|
||||
|
||||
// Prepare Utils object, in module PythonQt.calamares
|
||||
if ( !s_utils )
|
||||
{
|
||||
s_utils = new ::Utils( Calamares::JobQueue::instance()->globalStorage() );
|
||||
}
|
||||
cala.addObject( "utils", s_utils );
|
||||
|
||||
// Append configuration object, in module PythonQt.calamares
|
||||
cala.addVariable( "configuration", m_configurationMap );
|
||||
|
||||
// Basic stdout/stderr handling
|
||||
QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut,
|
||||
[]( const QString& message )
|
||||
{
|
||||
cDebug() << "PythonQt OUT>" << message;
|
||||
}
|
||||
);
|
||||
QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr,
|
||||
[]( const QString& message )
|
||||
{
|
||||
cDebug() << "PythonQt ERR>" << message;
|
||||
}
|
||||
);
|
||||
QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut, []( const QString& message ) {
|
||||
cDebug() << "PythonQt OUT>" << message;
|
||||
} );
|
||||
QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr, []( const QString& message ) {
|
||||
cDebug() << "PythonQt ERR>" << message;
|
||||
} );
|
||||
}
|
||||
|
||||
QDir workingDir( m_workingPath );
|
||||
if ( !workingDir.exists() )
|
||||
{
|
||||
cDebug() << "Invalid working directory"
|
||||
<< m_workingPath
|
||||
<< "for module"
|
||||
<< name();
|
||||
cDebug() << "Invalid working directory" << m_workingPath << "for module" << name();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -130,23 +125,15 @@ PythonQtViewModule::loadSelf()
|
||||
QFileInfo scriptFileInfo( fullPath );
|
||||
if ( !scriptFileInfo.isReadable() )
|
||||
{
|
||||
cDebug() << "Invalid main script file path"
|
||||
<< fullPath
|
||||
<< "for module"
|
||||
<< name();
|
||||
cDebug() << "Invalid main script file path" << fullPath << "for module" << name();
|
||||
return;
|
||||
}
|
||||
|
||||
// Construct empty Python module with the given name
|
||||
PythonQtObjectPtr cxt =
|
||||
PythonQt::self()->
|
||||
createModuleFromScript( name() );
|
||||
PythonQtObjectPtr cxt = PythonQt::self()->createModuleFromScript( name() );
|
||||
if ( cxt.isNull() )
|
||||
{
|
||||
cDebug() << "Cannot load PythonQt context from file"
|
||||
<< fullPath
|
||||
<< "for module"
|
||||
<< name();
|
||||
cDebug() << "Cannot load PythonQt context from file" << fullPath << "for module" << name();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -165,9 +152,8 @@ PythonQtViewModule::loadSelf()
|
||||
|
||||
m_viewStep = new PythonQtViewStep( cxt );
|
||||
|
||||
cDebug() << "PythonQtViewModule loading self for instance" << instanceKey()
|
||||
<< "\nPythonQtViewModule at address" << this
|
||||
<< "\nViewStep at address" << m_viewStep;
|
||||
cDebug() << "PythonQtViewModule loading self for instance" << instanceKey() << "\nPythonQtViewModule at address"
|
||||
<< this << "\nViewStep at address" << m_viewStep;
|
||||
|
||||
m_viewStep->setModuleInstanceKey( instanceKey() );
|
||||
m_viewStep->setConfigurationMap( m_configurationMap );
|
||||
@ -193,7 +179,9 @@ PythonQtViewModule::initFrom( const QVariantMap& moduleDescriptor )
|
||||
m_workingPath = directory.absolutePath();
|
||||
|
||||
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
|
||||
{
|
||||
m_scriptFileName = moduleDescriptor.value( "script" ).toString();
|
||||
}
|
||||
}
|
||||
|
||||
PythonQtViewModule::PythonQtViewModule()
|
||||
@ -201,8 +189,6 @@ PythonQtViewModule::PythonQtViewModule()
|
||||
{
|
||||
}
|
||||
|
||||
PythonQtViewModule::~PythonQtViewModule()
|
||||
{
|
||||
}
|
||||
PythonQtViewModule::~PythonQtViewModule() {}
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
@ -19,8 +19,8 @@
|
||||
#ifndef CALAMARES_PYTHONQTVIEWMODULE_H
|
||||
#define CALAMARES_PYTHONQTVIEWMODULE_H
|
||||
|
||||
#include "UiDllMacro.h"
|
||||
#include "Module.h"
|
||||
#include "UiDllMacro.h"
|
||||
|
||||
namespace Calamares
|
||||
{
|
||||
@ -40,7 +40,7 @@ protected:
|
||||
void initFrom( const QVariantMap& moduleDescriptor ) override;
|
||||
|
||||
private:
|
||||
friend class Module; //so only the superclass can instantiate
|
||||
friend class Module; //so only the superclass can instantiate
|
||||
explicit PythonQtViewModule();
|
||||
virtual ~PythonQtViewModule();
|
||||
|
||||
@ -50,6 +50,6 @@ private:
|
||||
QString m_workingPath;
|
||||
};
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // CALAMARES_PYTHONQTVIEWMODULE_H
|
||||
#endif // CALAMARES_PYTHONQTVIEWMODULE_H
|
||||
|
@ -16,4 +16,3 @@
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "Requirement.h"
|
||||
|
||||
|
@ -62,6 +62,6 @@ using RequirementsList = QList< RequirementEntry >;
|
||||
|
||||
} // namespace Calamares
|
||||
|
||||
Q_DECLARE_METATYPE(Calamares::RequirementEntry)
|
||||
Q_DECLARE_METATYPE( Calamares::RequirementEntry )
|
||||
|
||||
#endif
|
||||
|
@ -25,10 +25,10 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
#include <QFuture>
|
||||
#include <QFutureWatcher>
|
||||
#include <QTimer>
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
|
||||
|
||||
namespace Calamares
|
||||
@ -54,12 +54,15 @@ registerMetatypes()
|
||||
}
|
||||
|
||||
static void
|
||||
check( Module * const &m, RequirementsChecker *c )
|
||||
check( Module* const& m, RequirementsChecker* c )
|
||||
{
|
||||
RequirementsList l = m->checkRequirements();
|
||||
if ( l.count() > 0 )
|
||||
{
|
||||
c->addCheckedRequirements( l );
|
||||
c->requirementsProgress( QObject::tr( "Requirements checking for module <i>%1</i> is complete." ).arg( m->name() ) );
|
||||
}
|
||||
c->requirementsProgress(
|
||||
QObject::tr( "Requirements checking for module <i>%1</i> is complete." ).arg( m->name() ) );
|
||||
}
|
||||
|
||||
RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* parent )
|
||||
@ -74,9 +77,7 @@ RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* p
|
||||
registerMetatypes();
|
||||
}
|
||||
|
||||
RequirementsChecker::~RequirementsChecker()
|
||||
{
|
||||
}
|
||||
RequirementsChecker::~RequirementsChecker() {}
|
||||
|
||||
void
|
||||
RequirementsChecker::run()
|
||||
@ -85,10 +86,11 @@ RequirementsChecker::run()
|
||||
connect( m_progressTimer, &QTimer::timeout, this, &RequirementsChecker::reportProgress );
|
||||
m_progressTimer->start( 1200 ); // msec
|
||||
|
||||
for (const auto& module : m_modules )
|
||||
for ( const auto& module : m_modules )
|
||||
{
|
||||
Watcher *watcher = new Watcher( this );
|
||||
Watcher* watcher = new Watcher( this );
|
||||
watcher->setFuture( QtConcurrent::run( check, module, this ) );
|
||||
watcher->setObjectName( module->name() );
|
||||
m_watchers.append( watcher );
|
||||
connect( watcher, &Watcher::finished, this, &RequirementsChecker::finished );
|
||||
}
|
||||
@ -102,7 +104,9 @@ RequirementsChecker::finished()
|
||||
static QMutex finishedMutex;
|
||||
QMutexLocker lock( &finishedMutex );
|
||||
|
||||
if ( m_progressTimer && std::all_of( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher *w ) { return w && w->isFinished(); } ) )
|
||||
if ( m_progressTimer && std::all_of( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher* w ) {
|
||||
return w && w->isFinished();
|
||||
} ) )
|
||||
{
|
||||
cDebug() << "All requirements have been checked.";
|
||||
if ( m_progressTimer )
|
||||
@ -125,7 +129,7 @@ RequirementsChecker::finished()
|
||||
}
|
||||
|
||||
emit requirementsComplete( acceptable );
|
||||
QTimer::singleShot(0, this, &RequirementsChecker::done );
|
||||
QTimer::singleShot( 0, this, &RequirementsChecker::done );
|
||||
}
|
||||
}
|
||||
|
||||
@ -146,16 +150,28 @@ RequirementsChecker::reportProgress()
|
||||
{
|
||||
m_progressTimeouts++;
|
||||
|
||||
auto remaining = std::count_if( m_watchers.cbegin(), m_watchers.cend(), []( const Watcher *w ) { return w && !w->isFinished(); } );
|
||||
QStringList remainingNames;
|
||||
auto remaining = std::count_if( m_watchers.cbegin(), m_watchers.cend(),
|
||||
[&]( const Watcher* w ) {
|
||||
if ( w && !w->isFinished() )
|
||||
{
|
||||
remainingNames << w->objectName();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} );
|
||||
if ( remaining > 0 )
|
||||
{
|
||||
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).", "", remaining );
|
||||
QString elapsed = tr( "(%n second(s))", "", m_progressTimeouts * posInterval / 1000 );
|
||||
emit requirementsProgress( waiting + QString( " " ) + elapsed );
|
||||
}
|
||||
else
|
||||
{
|
||||
emit requirementsProgress( tr( "System-requirements checking is complete." ) );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace Calamares
|
||||
|
@ -78,10 +78,10 @@ private:
|
||||
|
||||
RequirementsList m_collectedRequirements;
|
||||
|
||||
QTimer *m_progressTimer;
|
||||
QTimer* m_progressTimer;
|
||||
unsigned m_progressTimeouts;
|
||||
} ;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace Calamares
|
||||
|
||||
#endif
|
||||
|
@ -19,10 +19,10 @@
|
||||
|
||||
#include "ViewModule.h"
|
||||
|
||||
#include "utils/PluginFactory.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "viewpages/ViewStep.h"
|
||||
#include "ViewManager.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/PluginFactory.h"
|
||||
#include "viewpages/ViewStep.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QPluginLoader>
|
||||
@ -75,7 +75,9 @@ ViewModule::loadSelf()
|
||||
cDebug() << "ViewModule" << instanceKey() << "loading complete.";
|
||||
}
|
||||
else
|
||||
{
|
||||
cWarning() << Q_FUNC_INFO << "No view step was created";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -100,7 +102,7 @@ ViewModule::initFrom( const QVariantMap& moduleDescriptor )
|
||||
// If a load path is not specified, we look for a plugin to load in the directory.
|
||||
if ( load.isEmpty() || !QLibrary::isLibrary( load ) )
|
||||
{
|
||||
const QStringList ls = directory.entryList( QStringList{ "*.so" } );
|
||||
const QStringList ls = directory.entryList( QStringList { "*.so" } );
|
||||
if ( !ls.isEmpty() )
|
||||
{
|
||||
for ( QString entry : ls )
|
||||
@ -135,4 +137,4 @@ ViewModule::checkRequirements()
|
||||
return m_viewStep->checkRequirements();
|
||||
}
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
@ -20,8 +20,8 @@
|
||||
#ifndef CALAMARES_VIEWMODULE_H
|
||||
#define CALAMARES_VIEWMODULE_H
|
||||
|
||||
#include "UiDllMacro.h"
|
||||
#include "Module.h"
|
||||
#include "UiDllMacro.h"
|
||||
|
||||
class QPluginLoader;
|
||||
|
||||
@ -45,7 +45,7 @@ protected:
|
||||
void initFrom( const QVariantMap& moduleDescriptor ) override;
|
||||
|
||||
private:
|
||||
friend class Module; //so only the superclass can instantiate
|
||||
friend class Module; //so only the superclass can instantiate
|
||||
explicit ViewModule();
|
||||
virtual ~ViewModule() override;
|
||||
|
||||
@ -53,6 +53,6 @@ private:
|
||||
ViewStep* m_viewStep = nullptr;
|
||||
};
|
||||
|
||||
} // namespace Calamares
|
||||
} // namespace Calamares
|
||||
|
||||
#endif // CALAMARES_VIEWMODULE_H
|
||||
#endif // CALAMARES_VIEWMODULE_H
|
||||
|
@ -28,4 +28,4 @@
|
||||
# The default is empty/unset, leading to the behavior from Calamares
|
||||
# 3.2.9 and earlier which passed "all" as version.
|
||||
|
||||
# kernel: all
|
||||
kernel: "all"
|
||||
|
Loading…
Reference in New Issue
Block a user