diff --git a/CMakeLists.txt b/CMakeLists.txt index c33ad8e6f..32cd8ab3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) set( CALAMARES_ORGANIZATION_NAME "Calamares" ) set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" ) set( CALAMARES_APPLICATION_NAME "Calamares" ) -set( CALAMARES_DESCRIPTION_SUMMARY +set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" ) set( CALAMARES_VERSION_MAJOR 3 ) @@ -86,17 +86,17 @@ set( _tx_complete da pt_PT ro tr_TR zh_TW zh_CN pt_BR fr hr ca lt id cs_CZ ) set( _tx_good sq es pl ja sk it_IT hu ru he de nl bg uk ) set( _tx_ok ast is ar sv el es_MX gl en_GB th fi_FI hi eu sr nb sl sr@latin mr es_PR kk kn et be ) -set( _tx_bad uz lo ur gu fr_CH fa eo ) +set( _tx_bad uz lo ur gu fr_CH fa eo ko ) ### Required versions # # See DEPENDENCIES section below. -set( QT_VERSION 5.6.0 ) +set( QT_VERSION 5.7.0 ) set( YAMLCPP_VERSION 0.5.1 ) set( ECM_VERSION 5.18 ) set( PYTHONLIBS_VERSION 3.3 ) -set( BOOSTPYTHON_VERSION 1.54.0 ) +set( BOOSTPYTHON_VERSION 1.55.0 ) ### CMAKE SETUP diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index e02102829..d2f878381 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -38,6 +38,7 @@ # RESOURCES resource-file # [NO_INSTALL] # [SHARED_LIB] +# [EMERGENCY] # ) include( CMakeParseArguments ) @@ -47,7 +48,7 @@ include( CMakeColors ) function( calamares_add_plugin ) # parse arguments ( name needs to be saved before passing ARGN into the macro ) set( NAME ${ARGV0} ) - set( options NO_INSTALL SHARED_LIB ) + set( options NO_INSTALL SHARED_LIB EMERGENCY ) set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES ) set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS ) cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) @@ -71,7 +72,7 @@ function( calamares_add_plugin ) # message( " ${Green}NO_INSTALL:${ColorReset} ${PLUGIN_NO_INSTALL}" ) message( " ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}" ) if( PLUGIN_CONFIG_FILES ) - if ( INSTALL_CONFIG ) + if ( INSTALL_CONFIG AND NOT PLUGIN_NO_INSTALL ) message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${PLUGIN_DATA_DESTINATION}" ) else() message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => [Skipping installation]" ) @@ -92,7 +93,7 @@ function( calamares_add_plugin ) set( target_type "SHARED" ) endif() - list( APPEND calamares_add_library_args + set( calamares_add_library_args "${target}" "EXPORT_MACRO" "${PLUGIN_EXPORT_MACRO}" "TARGET_TYPE" "${target_type}" @@ -115,9 +116,14 @@ function( calamares_add_plugin ) list( APPEND calamares_add_library_args "COMPILE_DEFINITIONS" ${PLUGIN_COMPILE_DEFINITIONS} ) endif() - list( APPEND calamares_add_library_args "NO_VERSION" ) + if ( PLUGIN_NO_INSTALL ) + list( APPEND calamares_add_library_args "NO_INSTALL" ) + endif() - list( APPEND calamares_add_library_args "INSTALL_BINDIR" "${PLUGIN_DESTINATION}" ) + list( APPEND calamares_add_library_args + "NO_VERSION" + "INSTALL_BINDIR" "${PLUGIN_DESTINATION}" + ) if( PLUGIN_RESOURCES ) list( APPEND calamares_add_library_args "RESOURCES" "${PLUGIN_RESOURCES}" ) @@ -132,16 +138,21 @@ function( calamares_add_plugin ) set( _type ${PLUGIN_TYPE} ) file( WRITE ${_file} "# AUTO-GENERATED metadata file\n# Syntax is YAML 1.2\n---\n" ) file( APPEND ${_file} "type: \"${_type}\"\nname: \"${PLUGIN_NAME}\"\ninterface: \"qtplugin\"\nload: \"lib${target}.so\"\n" ) + if ( PLUGIN_EMERGENCY ) + file( APPEND ${_file} "emergency: true\n" ) + endif() endif() - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} - DESTINATION ${PLUGIN_DESTINATION} ) + if ( NOT PLUGIN_NO_INSTALL ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} + DESTINATION ${PLUGIN_DESTINATION} ) - if ( INSTALL_CONFIG ) - foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) - configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} - DESTINATION ${PLUGIN_DATA_DESTINATION} ) - endforeach() + if ( INSTALL_CONFIG ) + foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} ) + configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} + DESTINATION ${PLUGIN_DATA_DESTINATION} ) + endforeach() + endif() endif() endfunction() diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index f5dd8c50c..4892cc0f9 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -22,6 +22,40 @@ include( CMakeParseArguments ) +if( NOT _rcc_version_support_checked ) + set( _rcc_version_support_checked TRUE ) + + # Extract the executable name + get_property( _rcc_executable + TARGET ${Qt5Core_RCC_EXECUTABLE} + PROPERTY IMPORTED_LOCATION + ) + if( NOT _rcc_executable ) + # Weird, probably now uses Qt5::rcc which is wrong too + set( _rcc_executable ${Qt5Core_RCC_EXECUTABLE} ) + endif() + + # Try an empty RCC file with explicit format-version + execute_process( + COMMAND echo "" + COMMAND ${Qt5Core_RCC_EXECUTABLE} --format-version 1 --list - + RESULT_VARIABLE _rcc_version_rv + ERROR_VARIABLE _rcc_version_dump + ) + if ( _rcc_version_rv EQUAL 0 ) + # Supported: force to the reproducible version + set( _rcc_version_support --format-version 1 ) + else() + # Older Qt versions (5.7, 5.8) don't support setting the + # rcc format-version, so won't be reproducible if they + # default to version 2. + set( _rcc_version_support "" ) + endif() + unset( _rcc_version_rv ) + unset( _rcc_version_dump ) +endif() + + # Internal macro for adding the C++ / Qt translations to the # build and install tree. Should be called only once, from # src/calamares/CMakeLists.txt. @@ -61,7 +95,7 @@ macro(add_calamares_translations language) add_custom_command( OUTPUT ${trans_outfile} COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} + ARGS ${rcc_options} ${_rcc_version_support} -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} ) diff --git a/README.md b/README.md index a41ae6f7a..f35b012c8 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,12 @@ Main: * Compiler with C++11 support: GCC >= 4.9.0 or Clang >= 3.5.1 * CMake >= 3.2 -* Qt >= 5.6 +* Qt >= 5.7 * yaml-cpp >= 0.5.1 -* Python >= 3.3 -* Boost.Python >= 1.55.0 -* extra-cmake-modules (recommended; required for some modules) +* Python >= 3.3 (required for some modules) +* Boost.Python >= 1.55.0 (recommended, or PythonQt; one is required for some modules) +* PythonQt (recommended, or Boost.Python; one is required for some modules) +* extra-cmake-modules >= 5.18 (recommended; required for some modules) Modules: * welcome: @@ -38,6 +39,6 @@ Modules: ### Building See [wiki](https://github.com/calamares/calamares/wiki) for up to date -[building](https://github.com/calamares/calamares/wiki/Developer's-Guide) -and [deployment](https://github.com/calamares/calamares/wiki/Deployer's-Guide) +[building](https://github.com/calamares/calamares/wiki/Develop-Guide) +and [deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide) instructions. diff --git a/calamares.desktop b/calamares.desktop index f8be5d1f3..c1c8d44e2 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -47,9 +47,9 @@ GenericName[es]=Instalador del Sistema Comment[es]=Calamares — Instalador del Sistema Name[es]=Instalar Sistema Icon[et]=calamares -GenericName[et]=Süsteemi installija -Comment[et]=Calamares — Süsteemi installija -Name[et]=Installi süsteem +GenericName[et]=Süsteemipaigaldaja +Comment[et]=Calamares — süsteemipaigaldaja +Name[et]=Paigalda süsteem Name[eu]=Sistema instalatu Name[es_PR]=Instalar el sistema Icon[fr]=calamares @@ -156,6 +156,9 @@ Icon[eo]=calamares GenericName[eo]=Sistema Instalilo Comment[eo]=Calamares — Sistema Instalilo Name[eo]=Instali Sistemo +Icon[es_MX]=calamares +GenericName[es_MX]=Instalador del sistema +Comment[es_MX]=Calamares - Instalador del sistema Name[es_MX]=Instalar el Sistema Icon[pt_PT]=calamares GenericName[pt_PT]=Instalador de Sistema diff --git a/lang/calamares_es_MX.ts b/lang/calamares_es_MX.ts index f6e76dc9a..657507b9d 100644 --- a/lang/calamares_es_MX.ts +++ b/lang/calamares_es_MX.ts @@ -4,17 +4,17 @@ 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. - + El <strong>entorno de arranque </strong>de este sistema. <br><br>Sistemas antiguos x86 solo admiten <strong>BIOS</strong>. <br>Sistemas modernos usualmente usan <strong>EFI</strong>, pero podrían aparecer como BIOS si inició en modo de compatibilidad. This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - + Este sistema fue iniciado con un entorno de arranque <strong>EFI. </strong><br><br>Para configurar el arranque desde un entorno EFI, este instalador debe hacer uso de un cargador de arranque, como <strong>GRUB</strong>, <strong>system-boot </strong> o una <strong>Partición de sistema EFI</strong>. Esto es automático, a menos que escoja el particionado manual, en tal caso debe escogerla o crearla por su cuenta. 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. - + Este sistema fue iniciado con un entorno de arranque <strong>BIOS. </strong><br><br>Para configurar el arranque desde un entorno BIOS, este instalador debe instalar un gestor de arranque como <strong>GRUB</strong>, ya sea al inicio de la partición o en el <strong> Master Boot Record</strong> cerca del inicio de la tabla de particiones (preferido). Esto es automático, a menos que escoja el particionado manual, en este caso debe configurarlo por su cuenta. @@ -76,12 +76,12 @@ none - + ninguno Interface: - + Interfaz: @@ -138,7 +138,7 @@ Working directory %1 for python job %2 is not readable. - La carpeta de trabajo %1 para la tarea de python %2 no se pudo leer. + La carpeta de trabajo %1 para la tarea de python %2 no es accesible. @@ -179,44 +179,44 @@ Cancel installation without changing the system. - + Cancelar instalación sin cambiar el sistema. &Install - + &Instalar Cancel installation? - Cancelar la instalación? + ¿Cancelar la instalación? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Realmente desea cancelar el proceso de instalación actual? + ¿Realmente desea cancelar el proceso de instalación actual? El instalador terminará y se perderán todos los cambios. &Yes - + &Si &No - + &No &Close - + &Cerrar Continue with setup? - Continuar con la instalación? + ¿Continuar con la instalación? @@ -236,12 +236,12 @@ El instalador terminará y se perderán todos los cambios. &Done - + &Hecho The installation is complete. Close the installer. - + Instalación completa. Cierre el instalador. @@ -259,12 +259,12 @@ El instalador terminará y se perderán todos los cambios. Unknown exception type - Excepción desconocida + Tipo de excepción desconocida unparseable Python error - error no analizable Python + error Python no analizable @@ -274,7 +274,7 @@ El instalador terminará y se perderán todos los cambios. Unfetchable Python error. - Error de Python Unfetchable. + Error de Python inalcanzable. @@ -305,8 +305,7 @@ El instalador terminará y se perderán todos los cambios. This program will ask you some questions and set up %2 on your computer. - El programa le hará algunas preguntas y configurará %2 en su ordenador. - + El programa le hará algunas preguntas y configurará %2 en su ordenador. @@ -344,7 +343,7 @@ El instalador terminará y se perderán todos los cambios. %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. - + %1 será reducido a %2MB y una nueva partición de %3MB será creado para %4. @@ -362,7 +361,7 @@ El instalador terminará y se perderán todos los cambios. Reuse %1 as home partition for %2. - + Reuse %1 como partición home para %2. @@ -393,7 +392,7 @@ El instalador terminará y se perderán todos los cambios. 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. - + Este dispositivo de almacenamiento parece no tener un sistema operativo en el. ¿que le gustaría hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. @@ -401,12 +400,12 @@ El instalador terminará y se perderán todos los cambios. <strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device. - + <strong>Borrar disco</strong> <br/>Esto <font color="red">borrará</font> todos los datos presentes actualmente en el dispositivo de almacenamiento seleccionado. 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. - + Este dispositivo de almacenamiento tiene %1 en el. ¿Que le gustaría hacer? <br/>Usted podrá revisar y confirmar sus elecciones antes de que cualquier cambio se realice al dispositivo de almacenamiento. @@ -414,7 +413,7 @@ El instalador terminará y se perderán todos los cambios. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - + <strong>Instalar junto a</strong> <br/>El instalador reducirá una partición con el fin de hacer espacio para %1. @@ -422,17 +421,17 @@ El instalador terminará y se perderán todos los cambios. <strong>Replace a partition</strong><br/>Replaces a partition with %1. - + <strong>Reemplazar una partición</strong> <br/>Reemplaza una partición con %1. 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. - + Este dispositivo de almacenamiento ya tiene un sistema operativo en el. ¿Que le gustaría hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. 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. - + Este dispositivo de almacenamiento tiene múltiples sistemas operativos en el. ¿Que le gustaria hacer?<br/> Usted podrá revisar y confirmar sus elecciones antes que cualquier cambio se realice al dispositivo de almacenamiento. @@ -440,18 +439,17 @@ El instalador terminará y se perderán todos los cambios. Clear mounts for partitioning operations on %1 - <b>Instalar %1 en una partición existente</b><br/>Podrás elegir que partición borrar. + Despejar puntos de montaje para operaciones de particionamiento en %1 Clearing mounts for partitioning operations on %1. - Limpiar puntos de montaje para operaciones de particionamiento en %1 + Despejando puntos de montaje para operaciones de particionamiento en %1 Cleared all mounts for %1 - Todas las unidades desmontadas en %1 - + Puntos de montaje despejados para %1 @@ -459,12 +457,12 @@ El instalador terminará y se perderán todos los cambios. Clear all temporary mounts. - Quitar todos los puntos de montaje temporales. + Despejar todos los puntos de montaje temporales. Clearing all temporary mounts. - Limpiando todos los puntos de montaje temporales. + Despejando todos los puntos de montaje temporales. @@ -474,7 +472,7 @@ El instalador terminará y se perderán todos los cambios. Cleared all temporary mounts. - Se han quitado todos los puntos de montaje temporales. + Todos los puntos de montaje temporales despejados. @@ -483,17 +481,17 @@ El instalador terminará y se perderán todos los cambios. Could not run command. - + No puede ejecutarse el comando. The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. - + Este comando se ejecuta en el entorno host y necesita saber la ruta root, pero no hay rootMountPoint definido. The command needs to know the user's name, but no username is defined. - + Este comando necesita saber el nombre de usuario, pero no hay nombre de usuario definido. @@ -501,7 +499,7 @@ El instalador terminará y se perderán todos los cambios. Contextual Processes Job - + Tareas de procesos contextuales. @@ -509,12 +507,12 @@ El instalador terminará y se perderán todos los cambios. Create a Partition - Crear partición + Crear una partición MiB - + MiB @@ -539,27 +537,27 @@ El instalador terminará y se perderán todos los cambios. LVM LV name - + Nombre del LVM LV. Flags: - Banderas: + Indicadores: &Mount Point: - Punto de &montaje: + Punto de &Montaje: Si&ze: - &Tamaño: + Ta&maño: En&crypt - + En&criptar @@ -579,7 +577,7 @@ El instalador terminará y se perderán todos los cambios. Mountpoint already in use. Please select another one. - + Punto de montaje ya esta en uso. Por favor seleccione otro. @@ -722,32 +720,32 @@ El instalador terminará y se perderán todos los cambios. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - + Este tipo de <strong>tabla de partición</strong> en el dispositivo de almacenamiento seleccionado.<br> <br>La única forma de cambiar el tipo de tabla de partición es borrar y recrear la tabla de partición de cero. lo cual destruye todos los datos en el dispositivo de almacenamiento.<br> Este instalador conservará la actual tabla de partición a menos que usted explícitamente elija lo contrario. <br>Si no está seguro, en los sistemas modernos GPT es lo preferible. This device has a <strong>%1</strong> partition table. - + Este dispositivo tiene una tabla de partición <strong>%1</strong> This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - + Este es un dispositivo<br> <strong>loop</strong>. <br>Es un pseudo - dispositivo sin tabla de partición que hace un archivo accesible como un dispositivo bloque. Este tipo de configuración usualmente contiene un solo sistema de archivos. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - + Este instalador <strong>no puede detectar una tabla de partición</strong> en el dispositivo de almacenamiento seleccionado.<br> <br>El dispositivo o no tiene tabla de partición, o la tabla de partición esta corrupta o de un tipo desconocido. <br>Este instalador puede crear una nueva tabla de partición por usted ya sea automáticamente, o a través de la página de particionado manual. <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. - + <br><br>Este es el tipo de tabla de partición recomendada para sistemas modernos que inician desde un entorno de arranque <strong>EFI</strong>. <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>Este tipo de tabla de partición solo es recomendable en sistemas antiguos que inician desde un entorno de arranque <strong>BIOS</strong>. GPT es recomendado en la otra mayoría de casos.<br><br><strong> Precaución:</strong> La tabla de partición MBR es una era estándar MS-DOS obsoleta.<br> Unicamente 4 particiones <em>primarias</em> pueden ser creadas, y de esas 4, una puede ser una partición <em>extendida</em>, la cual puede a su vez contener varias particiones <em>logicas</em>. @@ -763,17 +761,17 @@ El instalador terminará y se perderán todos los cambios. Write LUKS configuration for Dracut to %1 - + Escribe configuración LUKS para Dracut a %1 Skip writing LUKS configuration for Dracut: "/" partition is not encrypted - + Omitir escritura de configuración LUKS por Dracut: "/" partición no está encriptada. Failed to open %1 - + Falla al abrir %1 @@ -781,7 +779,7 @@ El instalador terminará y se perderán todos los cambios. Dummy C++ Job - + Trabajo C++ Simulado @@ -824,7 +822,7 @@ El instalador terminará y se perderán todos los cambios. MiB - + MiB @@ -834,12 +832,12 @@ El instalador terminará y se perderán todos los cambios. Flags: - Banderas: + Indicadores: Mountpoint already in use. Please select another one. - + Punto de montaje ya esta en uso. Por favor seleccione otro. @@ -852,22 +850,22 @@ El instalador terminará y se perderán todos los cambios. En&crypt system - + En&criptar sistema Passphrase - + Contraseña segura Confirm passphrase - + Confirmar contraseña segura Please enter the same passphrase in both boxes. - + Favor ingrese la misma contraseña segura en ambas casillas. @@ -913,12 +911,12 @@ El instalador terminará y se perderán todos los cambios. Form - Forma + Formulario <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - + <html><head/><body><p>Cuando esta casilla esta chequeada, su sistema reiniciará inmediatamente cuando de click en <span style=" font-style:italic;">Hecho</span> o cierre el instalador.</p></body></html> @@ -933,7 +931,7 @@ El instalador terminará y se perderán todos los cambios. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Instalación fallida</h1> <br/>%1 no ha sido instalado en su computador. <br/>El mensaje de error es: %2. @@ -946,12 +944,12 @@ El instalador terminará y se perderán todos los cambios. Installation Complete - + Instalación Completa The installation of %1 is complete. - + La instalación de %1 está completa. @@ -987,7 +985,7 @@ El instalador terminará y se perderán todos los cambios. Please install KDE Konsole and try again! - + Favor instale la Konsola KDE e intentelo de nuevo! @@ -1044,7 +1042,7 @@ El instalador terminará y se perderán todos los cambios. &OK - + &OK @@ -1130,12 +1128,12 @@ El instalador terminará y se perderán todos los cambios. The system language will be set to %1. - + El lenguaje del sistema será establecido a %1. The numbers and dates locale will be set to %1. - + Los números y datos locales serán establecidos a %1. @@ -1188,17 +1186,17 @@ El instalador terminará y se perderán todos los cambios. Description - + Descripción Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - + Instalación de Red. (Deshabilitada: No se puede acceder a la lista de paquetes, verifique su conección de red) Network Installation. (Disabled: Received invalid groups data) - + Instalación de Red. (Deshabilitada: Grupos de datos invalidos recibidos) @@ -1206,7 +1204,7 @@ El instalador terminará y se perderán todos los cambios. Package selection - + Selección de paquete @@ -1214,242 +1212,242 @@ El instalador terminará y se perderán todos los cambios. Password is too short - + La contraseña es muy corta Password is too long - + La contraseña es muy larga Password is too weak - + La contraseña es muy débil Memory allocation error when setting '%1' - + Error de asignación de memoria al configurar '%1' Memory allocation error - + Error en la asignación de memoria The password is the same as the old one - + La contraseña es la misma que la anterior The password is a palindrome - + La contraseña es un Palíndromo The password differs with case changes only - + La contraseña solo difiere en cambios de mayúsculas y minúsculas The password is too similar to the old one - + La contraseña es muy similar a la anterior. The password contains the user name in some form - + La contraseña contiene el nombre de usuario de alguna forma The password contains words from the real name of the user in some form - + La contraseña contiene palabras del nombre real del usuario de alguna forma The password contains forbidden words in some form - + La contraseña contiene palabras prohibidas de alguna forma The password contains less than %1 digits - + La contraseña contiene menos de %1 dígitos The password contains too few digits - + La contraseña contiene muy pocos dígitos The password contains less than %1 uppercase letters - + La contraseña contiene menos de %1 letras mayúsculas The password contains too few uppercase letters - + La contraseña contiene muy pocas letras mayúsculas The password contains less than %1 lowercase letters - + La contraseña continee menos de %1 letras minúsculas The password contains too few lowercase letters - + La contraseña contiene muy pocas letras minúsculas The password contains less than %1 non-alphanumeric characters - + La contraseña contiene menos de %1 caracteres no alfanuméricos The password contains too few non-alphanumeric characters - + La contraseña contiene muy pocos caracteres alfanuméricos The password is shorter than %1 characters - + La contraseña es mas corta que %1 caracteres The password is too short - + La contraseña es muy corta The password is just rotated old one - + La contraseña solo es la rotación de la anterior The password contains less than %1 character classes - + La contraseña contiene menos de %1 tipos de caracteres The password does not contain enough character classes - + La contraseña no contiene suficientes tipos de caracteres The password contains more than %1 same characters consecutively - + La contraseña contiene más de %1 caracteres iguales consecutivamente The password contains too many same characters consecutively - + La contraseña contiene muchos caracteres iguales repetidos consecutivamente The password contains more than %1 characters of the same class consecutively - + La contraseña contiene mas de %1 caracteres de la misma clase consecutivamente The password contains too many characters of the same class consecutively - + La contraseña contiene muchos caracteres de la misma clase consecutivamente The password contains monotonic sequence longer than %1 characters - + La contraseña contiene secuencias monotónicas mas larga que %1 caracteres The password contains too long of a monotonic character sequence - + La contraseña contiene secuencias monotónicas muy largas No password supplied - + Contraseña no suministrada Cannot obtain random numbers from the RNG device - + No pueden obtenerse números aleatorios del dispositivo RING Password generation failed - required entropy too low for settings - + Generación de contraseña fallida - entropía requerida muy baja para los ajustes The password fails the dictionary check - %1 - + La contraseña falla el chequeo del diccionario %1 The password fails the dictionary check - + La contraseña falla el chequeo del diccionario Unknown setting - %1 - + Configuración desconocida - %1 Unknown setting - + Configuración desconocida Bad integer value of setting - %1 - + Valor entero de configuración incorrecto - %1 Bad integer value - + Valor entero incorrecto Setting %1 is not of integer type - + Ajuste de % 1 no es de tipo entero Setting is not of integer type - + Ajuste no es de tipo entero Setting %1 is not of string type - + El ajuste %1 no es de tipo cadena Setting is not of string type - + El ajuste no es de tipo cadena Opening the configuration file failed - + Apertura del archivo de configuración fallida The configuration file is malformed - + El archivo de configuración está malformado Fatal failure - + Falla fatal Unknown error - + Error desconocido @@ -1545,32 +1543,32 @@ El instalador terminará y se perderán todos los cambios. Root - + Root Home - + Home Boot - + Boot EFI system - + Sistema EFI Swap - + Swap New partition for %1 - + Partición nueva para %1 @@ -1580,7 +1578,7 @@ El instalador terminará y se perderán todos los cambios. %1 %2 - + %1 %2 @@ -1628,7 +1626,7 @@ El instalador terminará y se perderán todos los cambios. Storage de&vice: - + Dis&positivo de almacenamiento: @@ -1658,7 +1656,7 @@ El instalador terminará y se perderán todos los cambios. Install boot &loader on: - + Instalar &cargador de arranque en: @@ -1668,12 +1666,12 @@ El instalador terminará y se perderán todos los cambios. Can not create new partition - + No se puede crear nueva partición 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. - + La tabla de partición en %1 ya tiene %2 particiones primarias, y no pueden agregarse mas. Favor remover una partición primaria y en cambio, agregue una partición extendida. @@ -1746,32 +1744,32 @@ El instalador terminará y se perderán todos los cambios. No EFI system partition configured - + Sistema de partición EFI no configurada An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. - + Un sistema de partición EFI es necesario para iniciar %1. <br/><br/>Para configurar un sistema de partición EFI, Regrese y seleccione o cree un sistema de archivos FAT32 con la bandera <strong>esp</strong> activada y el punto de montaje <strong>%2</strong>. <br/><br/>Puede continuar sin configurar una partición de sistema EFI, pero su sistema podría fallar al iniciar. EFI system partition flag not set - + Indicador de partición del sistema EFI no configurado An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. - + Una partición del sistema EFI es necesaria para iniciar% 1. <br/><br/>Una partición se configuró con el punto de montaje <strong>% 2</strong>, pero su bandera <strong>esp</strong> no está configurada. <br/>Para establecer el indicador, retroceda y edite la partición.<br/><br/> Puede continuar sin configurar el indicador, pero su sistema puede fallar al iniciar. Boot partition not encrypted - + Partición de arranque no encriptada 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. - + Se creó una partición de arranque separada junto con una partición raíz cifrada, pero la partición de arranque no está encriptada.<br/><br/> Existen problemas de seguridad con este tipo de configuración, ya que los archivos importantes del sistema se guardan en una partición no encriptada. <br/>Puede continuar si lo desea, pero el desbloqueo del sistema de archivos ocurrirá más tarde durante el inicio del sistema. <br/>Para encriptar la partición de arranque, retroceda y vuelva a crearla, seleccionando <strong>Encriptar</strong> en la ventana de creación de la partición. @@ -1779,13 +1777,13 @@ El instalador terminará y se perderán todos los cambios. Plasma Look-and-Feel Job - + Trabajo Plasma Look-and-Feel Could not select KDE Plasma Look-and-Feel package - + No se pudo seleccionar el paquete KDE Plasma Look-and-Feel @@ -1798,12 +1796,12 @@ El instalador terminará y se perderán todos los cambios. Placeholder - + Marcador de posición 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 installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - + Favor seleccione un Escritorio Plasma KDE Look-and-Feel. También puede omitir este paso y configurar el Look-and-Feel una vez el sistema está instalado. Haciendo clic en la selección Look-and-Feel le dará una previsualización en vivo de ese Look-and-Feel. @@ -1811,7 +1809,7 @@ El instalador terminará y se perderán todos los cambios. Look-and-Feel - + Look-and-Feel @@ -1819,17 +1817,17 @@ El instalador terminará y se perderán todos los cambios. Saving files for later ... - + Guardando archivos para más tarde ... No files configured to save for later. - + No hay archivos configurados para guardar más tarde. Not all of the configured files could be preserved. - + No todos los archivos configurados podrían conservarse. @@ -1838,39 +1836,42 @@ El instalador terminará y se perderán todos los cambios. There was no output from the command. - + +No hubo salida desde el comando. Output: - + +Salida + External command crashed. - + El comando externo ha fallado. Command <i>%1</i> crashed. - + El comando <i>%1</i> ha fallado. External command failed to start. - + El comando externo falló al iniciar. Command <i>%1</i> failed to start. - + El comando <i>%1</i> Falló al iniciar. Internal error when starting command. - + Error interno al iniciar el comando. @@ -1880,22 +1881,22 @@ Output: External command failed to finish. - + Comando externo falla al finalizar Command <i>%1</i> failed to finish in %2 seconds. - + Comando <i>%1</i> falló al finalizar en %2 segundos. External command finished with errors. - + Comando externo finalizado con errores Command <i>%1</i> finished with exit code %2. - + Comando <i>%1</i> finalizó con código de salida %2. @@ -1914,27 +1915,27 @@ Output: unknown - + desconocido extended - + extendido unformatted - + no formateado swap - + swap Unpartitioned space or unknown partition table - + Espacio no particionado o tabla de partición desconocida @@ -2068,7 +2069,7 @@ Output: The screen is too small to display the installer. - + La pantalla es muy pequeña para mostrar el instalador @@ -2099,12 +2100,12 @@ Output: Scanning storage devices... - + Escaneando dispositivos de almacenamiento... Partitioning - + Particionando @@ -2164,7 +2165,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - + Fallo al escribir la configuración del teclado en el directorio /etc/default existente. @@ -2172,82 +2173,82 @@ Output: Set flags on partition %1. - + Establecer indicadores en la partición% 1. Set flags on %1MB %2 partition. - + Establecer indicadores en la partición %1MB %2. Set flags on new partition. - + Establecer indicadores en la nueva partición. Clear flags on partition <strong>%1</strong>. - + Borrar indicadores en la partición <strong>%1</strong>. Clear flags on %1MB <strong>%2</strong> partition. - + Borrar indicadores %1MB en la partición <strong>%2</strong>. Clear flags on new partition. - + Borrar indicadores en la nueva partición. Flag partition <strong>%1</strong> as <strong>%2</strong>. - + Indicador de partición <strong>%1</strong> como <strong>%2</strong>. Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + Indicador %1MB de partición <strong>%2</strong> como <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - + Marcar la nueva partición como <strong>%1</strong>. Clearing flags on partition <strong>%1</strong>. - + Borrar indicadores en la partición <strong>%1</strong>. Clearing flags on %1MB <strong>%2</strong> partition. - + Borrar indicadores en la partición %1MB <strong>%2</strong>. Clearing flags on new partition. - + Borrar indicadores en la nueva partición. Setting flags <strong>%2</strong> on partition <strong>%1</strong>. - + Establecer indicadores <strong>%2</strong> en la partición <strong>%1</strong>. Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + Establecer indicadores <strong>%3</strong> en partición %1MB <strong>%2</strong> Setting flags <strong>%1</strong> on new partition. - + Establecer indicadores <strong>%1</strong> en nueva partición. The installer failed to set flags on partition %1. - + El instalador no pudo establecer indicadores en la partición% 1. @@ -2275,12 +2276,12 @@ Output: Cannot disable root account. - + No se puede deshabilitar la cuenta root. passwd terminated with error code %1. - + Contraseña terminada con un error de código %1. @@ -2336,7 +2337,7 @@ Output: Shell Processes Job - + Trabajo de procesos Shell @@ -2345,7 +2346,7 @@ Output: %L1 / %L2 slide counter, %1 of %2 (numeric) - + %L1 / %L2 @@ -2369,22 +2370,22 @@ Output: Installation feedback - + Retroalimentacion de la instalación Sending installation feedback. - + Envío de retroalimentación de instalación. Internal error in install-tracking. - + Error interno en el seguimiento de instalación. HTTP request timed out. - + Tiempo de espera en la solicitud HTTP agotado. @@ -2392,28 +2393,28 @@ Output: Machine feedback - + Retroalimentación de la maquina Configuring machine feedback. - + Configurando la retroalimentación de la maquina. Error in machine feedback configuration. - + Error en la configuración de retroalimentación de la máquina. Could not configure machine feedback correctly, script error %1. - + No se pudo configurar correctamente la retroalimentación de la máquina, error de script% 1. Could not configure machine feedback correctly, Calamares error %1. - + No se pudo configurar la retroalimentación de la máquina correctamente, Calamares error% 1. @@ -2426,51 +2427,51 @@ Output: Placeholder - + Marcador de posición <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - + <html><head/><body><p>Al seleccionar esto, usted no enviará <span style=" font-weight:600;">ninguna información</span> acerca de su instalacion.</p></body></html> TextLabel - + Etiqueta de texto ... - + ... <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> - + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Haga clic aquí para más información acerca de comentarios del usuario</span></a></p></body></html> Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - + El seguimiento de instalación ayuda a% 1 a ver cuántos usuarios tienen, qué hardware instalan% 1 y (con las dos últimas opciones a continuación), obtener información continua sobre las aplicaciones preferidas. Para ver qué se enviará, haga clic en el ícono de ayuda al lado de cada área. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + Al seleccionar esto usted enviará información acerca de su instalación y hardware. Esta informacion será <b>enviada unicamente una vez</b> después de terminada la instalación. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + Al seleccionar esto usted enviará información <b>periodicamente</b> acerca de su instalación, hardware y aplicaciones a %1. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + Al seleccionar esto usted enviará información <b>regularmente</b> acerca de su instalación, hardware y patrones de uso de aplicaciones a %1. @@ -2478,7 +2479,7 @@ Output: Feedback - + Retroalimentación @@ -2563,7 +2564,7 @@ Output: <h1>Welcome to the Calamares installer for %1.</h1> - + <h1>Bienvenido al instalador Calamares para %1.</h1> @@ -2573,7 +2574,7 @@ Output: <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 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. - + <h1>%1</h1><br/><strong>%2<br/>por %3</strong><br/><br/>Derechos de autor 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt; <br/> Derechos de autor 2017 Adriaan de Groot &lt;groot@kde.org&gt;<br/> Gracias a Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg y al <a href="https://www.transifex.com/calamares/calamares/">equipo de traductores Calamares</a>. <br/><br/> Desarrollo de <a href="https://calamares.io/">Calamares</a> patrocinado por <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software. diff --git a/lang/calamares_et.ts b/lang/calamares_et.ts index 871f447da..8fcf5f20e 100644 --- a/lang/calamares_et.ts +++ b/lang/calamares_et.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - See süsteem käivitati <strong>EFI</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust EFI keskkonnast, peab see installija paigaldama käivituslaaduri rakenduse, näiteks <strong>GRUB</strong> või <strong>systemd-boot</strong> sinu <strong>EFI süsteemipartitsioonile</strong>. See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle valima või ise looma. + See süsteem käivitati <strong>EFI</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust EFI keskkonnast, peab see paigaldaja paigaldama käivituslaaduri rakenduse, näiteks <strong>GRUB</strong> või <strong>systemd-boot</strong> sinu <strong>EFI süsteemipartitsioonile</strong>. See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle valima või ise looma. 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. - See süsteem käivitati <strong>BIOS</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust BIOS keskkonnast, peab see installija paigaldama käivituslaaduri, näiteks <strong>GRUB</strong>, kas mõne partitsiooni algusse või <strong>Master Boot Record</strong>'i paritsioonitabeli alguse lähedale (eelistatud). See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle ise seadistama. + See süsteem käivitati <strong>BIOS</strong> käivituskeskkonnas.<br><br>Et seadistada käivitust BIOS keskkonnast, peab see paigaldaja paigaldama käivituslaaduri, näiteks <strong>GRUB</strong>, kas mõne partitsiooni algusse või <strong>Master Boot Record</strong>'i paritsioonitabeli alguse lähedale (eelistatud). See on automaatne, välja arvatud juhul, kui valid käsitsi partitsioneerimise, sel juhul pead sa selle ise seadistama. @@ -37,7 +37,7 @@ Do not install a boot loader - Ära installi käivituslaadurit + Ära paigalda käivituslaadurit @@ -99,7 +99,7 @@ Install - Installi + Paigalda @@ -179,24 +179,24 @@ Cancel installation without changing the system. - Tühista installimine ilma süsteemi muutmata. + Tühista paigaldamine ilma süsteemi muutmata. &Install - &Installi + &Paigalda Cancel installation? - Tühista installimine? + Tühista paigaldamine? Do you really want to cancel the current install process? The installer will quit and all changes will be lost. - Kas sa tõesti soovid tühistada praeguse installiprotsessi? -Installija sulgub ja kõik muutused kaovad. + Kas sa tõesti soovid tühistada praeguse paigaldusprotsessi? +Paigaldaja sulgub ning kõik muutused kaovad. @@ -221,12 +221,12 @@ Installija sulgub ja kõik muutused kaovad. 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 installija on tegemas muudatusi sinu kettale, et installida %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> + %1 paigaldaja on tegemas muudatusi sinu kettale, et paigaldada %2.<br/><strong>Sa ei saa neid muudatusi tagasi võtta.</strong> &Install now - &Installi kohe + &Paigalda kohe @@ -241,7 +241,7 @@ Installija sulgub ja kõik muutused kaovad. The installation is complete. Close the installer. - Installimine on lõpetatud. Sulge installija. + Paigaldamine on lõpetatud. Sulge paigaldaja. @@ -251,7 +251,7 @@ Installija sulgub ja kõik muutused kaovad. Installation Failed - Installimine ebaõnnestus + Paigaldamine ebaõnnestus @@ -282,7 +282,7 @@ Installija sulgub ja kõik muutused kaovad. %1 Installer - %1 installija + %1 paigaldaja @@ -295,12 +295,12 @@ Installija sulgub ja kõik muutused kaovad. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - See arvuti ei rahulda %1 installimiseks vajalikke minimaaltingimusi.<br/>Installimine ei saa jätkuda. <a href="#details">Detailid...</a> + See arvuti ei rahulda %1 paigldamiseks vajalikke minimaaltingimusi.<br/>Paigaldamine ei saa jätkuda. <a href="#details">Detailid...</a> This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. - See arvuti ei rahulda mõnda %1 installimiseks soovitatud tingimust.<br/>Installimine võib jätkuda, ent mõned funktsioonid võivad olla keelatud. + See arvuti ei rahulda mõnda %1 paigaldamiseks soovitatud tingimust.<br/>Paigaldamine võib jätkuda, ent mõned funktsioonid võivad olla keelatud. @@ -371,7 +371,7 @@ Installija sulgub ja kõik muutused kaovad. <strong>Select a partition to install on</strong> - <strong>Vali partitsioon, kuhu installida</strong> + <strong>Vali partitsioon, kuhu paigaldada</strong> @@ -412,7 +412,7 @@ Installija sulgub ja kõik muutused kaovad. <strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1. - <strong>Installi kõrvale</strong><br/>Installija vähendab partitsiooni, et teha ruumi operatsioonisüsteemile %1. + <strong>Paigalda kõrvale</strong><br/>Paigaldaja vähendab partitsiooni, et teha ruumi operatsioonisüsteemile %1. @@ -599,7 +599,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to create partition on disk '%1'. - Installija ei suutnud luua partitsiooni kettale "%1". + Paigaldaja ei suutnud luua partitsiooni kettale "%1". @@ -650,7 +650,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to create a partition table on %1. - Installija ei suutnud luua partitsioonitabelit kettale %1. + Paigaldaja ei suutnud luua partitsioonitabelit kettale %1. @@ -711,7 +711,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to delete partition %1. - Installija ei suutnud kustutada partitsiooni %1. + Paigaldaja ei suutnud kustutada partitsiooni %1. @@ -719,7 +719,7 @@ Installija sulgub ja kõik muutused kaovad. The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. - <strong>Partitsioonitabeli</strong> tüüp valitud mäluseadmel.<br><br>Ainuke viis partitsioonitabelit muuta on see kustutada ja nullist taasluua, mis hävitab kõik andmed mäluseadmel.<br>See installija säilitab praeguse partitsioonitabeli, v.a juhul kui sa ise valid vastupidist.<br>Kui pole kindel, eelista modernsetel süsteemidel GPT-d. + <strong>Partitsioonitabeli</strong> tüüp valitud mäluseadmel.<br><br>Ainuke viis partitsioonitabelit muuta on see kustutada ja nullist taasluua, mis hävitab kõik andmed mäluseadmel.<br>See paigaldaja säilitab praeguse partitsioonitabeli, v.a juhul kui sa ise valid vastupidist.<br>Kui pole kindel, eelista modernsetel süsteemidel GPT-d. @@ -734,7 +734,7 @@ Installija sulgub ja kõik muutused kaovad. This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. - See installija <strong>ei suuda tuvastada partitsioonitabelit</strong>valitud mäluseadmel.<br><br>Seadmel kas pole partitsioonitabelit, see on korrumpeerunud või on tundmatut tüüpi.<br>See installija võib sulle luua uue partitsioonitabeli, kas automaatselt või läbi käsitsi partitsioneerimise lehe. + See paigaldaja <strong>ei suuda tuvastada partitsioonitabelit</strong>valitud mäluseadmel.<br><br>Seadmel kas pole partitsioonitabelit, see on korrumpeerunud või on tundmatut tüüpi.<br>See paigaldaja võib sulle luua uue partitsioonitabeli, kas automaatselt või läbi käsitsi partitsioneerimise lehe. @@ -877,7 +877,7 @@ Installija sulgub ja kõik muutused kaovad. Install %1 on <strong>new</strong> %2 system partition. - Installi %1 <strong>uude</strong> %2 süsteemipartitsiooni. + Paigalda %1 <strong>uude</strong> %2 süsteemipartitsiooni. @@ -887,7 +887,7 @@ Installija sulgub ja kõik muutused kaovad. Install %2 on %3 system partition <strong>%1</strong>. - Installi %2 %3 süsteemipartitsioonile <strong>%1</strong>. + Paigalda %2 %3 süsteemipartitsioonile <strong>%1</strong>. @@ -897,7 +897,7 @@ Installija sulgub ja kõik muutused kaovad. Install boot loader on <strong>%1</strong>. - Installi käivituslaadur kohta <strong>%1</strong>. + Paigalda käivituslaadur kohta <strong>%1</strong>. @@ -915,7 +915,7 @@ Installija sulgub ja kõik muutused kaovad. <html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style=" font-style:italic;">Done</span> or close the installer.</p></body></html> - <html><head/><body><p>Kui see märkeruut on täidetud, taaskäivitab su süsteem automaatselt, kui vajutad <span style=" font-style:italic;">Valmis</span> või sulged installija.</p></body></html> + <html><head/><body><p>Kui see märkeruut on täidetud, taaskäivitab su süsteem automaatselt, kui vajutad <span style=" font-style:italic;">Valmis</span> või sulged paigaldaja.</p></body></html> @@ -925,12 +925,12 @@ Installija sulgub ja kõik muutused kaovad. <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. - <h1>Kõik on valmis.</h1><br/>%1 on installitud sinu arvutisse.<br/>Sa võid nüüd taaskäivitada oma uude süsteemi või jätkata %2 live-keskkonna kasutamist. + <h1>Kõik on valmis.</h1><br/>%1 on paigaldatud sinu arvutisse.<br/>Sa võid nüüd taaskäivitada oma uude süsteemi või jätkata %2 live-keskkonna kasutamist. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - <h1>Installimine ebaõnnestus</h1><br/>%1 ei installitud sinu arvutisse.<br/>Veateade oli: %2. + <h1>Paigaldamine ebaõnnestus</h1><br/>%1 ei paigaldatud sinu arvutisse.<br/>Veateade oli: %2. @@ -943,12 +943,12 @@ Installija sulgub ja kõik muutused kaovad. Installation Complete - Installimine lõpetatud + Paigaldus valmis The installation of %1 is complete. - %1 installimine on lõpetatud. + %1 paigaldus on valmis. @@ -971,7 +971,7 @@ Installija sulgub ja kõik muutused kaovad. The installer failed to format partition %1 on disk '%2'. - Installija ei suutnud vormindada partitsiooni %1 kettal "%2". + Paigaldaja ei suutnud vormindada partitsiooni %1 kettal "%2". @@ -979,12 +979,12 @@ Installija sulgub ja kõik muutused kaovad. Konsole not installed - Konsole pole installitud + Konsole pole paigaldatud Please install KDE Konsole and try again! - Palun installi KDE Konsole ja proovi uuesti! + Palun paigalda KDE Konsole ja proovi uuesti! @@ -1059,7 +1059,7 @@ Installija sulgub ja kõik muutused kaovad. <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. - <h1>Litsensileping</h1>See seadistusprotseduur installib omandiõigusega tarkvara, mis vastab litsensitingimustele. + <h1>Litsensileping</h1>See seadistusprotseduur paigaldab omandiõigusega tarkvara, mis vastab litsensitingimustele. @@ -1069,12 +1069,12 @@ Installija sulgub ja kõik muutused kaovad. <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. - <h1>Litsensileping</h1>See seadistusprotseduur võib installida omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. + <h1>Litsensileping</h1>See seadistusprotseduur võib paigaldada omandiõigusega tarkvara, mis vastab litsensitingimustele, et pakkuda lisafunktsioone ja täiendada kasutajakogemust. Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. - Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei installita omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. + Palun loe läbi allolevad lõppkasutaja litsensilepingud (EULAd).<br/>Kui sa tingimustega ei nõustu, ei paigaldata omandiõigusega tarkvara ning selle asemel kasutatakse avatud lähtekoodiga alternatiive. @@ -1190,12 +1190,12 @@ Installija sulgub ja kõik muutused kaovad. Network Installation. (Disabled: Unable to fetch package lists, check your network connection) - Võrguinstall. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) + Võrgupaigaldus. (Keelatud: paketinimistute saamine ebaõnnestus, kontrolli oma võrguühendust) Network Installation. (Disabled: Received invalid groups data) - Võrguinstall. (Keelatud: vastu võetud sobimatud grupiandmed) + Võrgupaigaldus. (Keelatud: vastu võetud sobimatud grupiandmed) @@ -1494,7 +1494,7 @@ Installija sulgub ja kõik muutused kaovad. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Kui rohkem kui üks inimene kasutab seda arvutit, saad sa määrata mitu kontot peale installi.</small> + <small>Kui rohkem kui üks inimene kasutab seda arvutit, saad sa pärast paigaldust määrata mitu kontot.</small> @@ -1655,7 +1655,7 @@ Installija sulgub ja kõik muutused kaovad. Install boot &loader on: - Installi käivituslaadur kohta: + Paigalda käivituslaadur kohta: @@ -1688,12 +1688,12 @@ Installija sulgub ja kõik muutused kaovad. Install %1 <strong>alongside</strong> another operating system. - Installi %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> + Paigalda %1 praeguse operatsioonisüsteemi <strong>kõrvale</strong> <strong>Erase</strong> disk and install %1. - <strong>Tühjenda</strong> ketas ja installi %1. + <strong>Tühjenda</strong> ketas ja paigalda %1. @@ -1708,12 +1708,12 @@ Installija sulgub ja kõik muutused kaovad. Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). - Installi %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). + Paigalda %1 teise operatsioonisüsteemi <strong>kõrvale</strong> kettal <strong>%2</strong> (%3). <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. - <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja installi %1. + <strong>Tühjenda</strong> ketas <strong>%2</strong> (%3) ja paigalda %1. @@ -1800,7 +1800,7 @@ Installija sulgub ja kõik muutused kaovad. 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 installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. - Palun vali KDE Plasma Desktop'ile välimus-ja-tunnetus. Sa võid selle sammu ka vahele jätta ja seadistada välimust-ja-tunnetust siis, kui süsteem on installitud. Välimuse-ja-tunnetuse valikule klõpsates näed selle reaalajas eelvaadet. + Palun vali KDE Plasma töölauale välimus-ja-tunnetus. Sa võid selle sammu ka vahele jätta ja seadistada välimust-ja-tunnetust siis, kui süsteem on paigaldatud. Välimuse-ja-tunnetuse valikule klõpsates näed selle reaalajas eelvaadet. @@ -1947,7 +1947,7 @@ Väljund: Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. - Vali, kuhu soovid %1 installida.<br/><font color="red">Hoiatus: </font>see kustutab valitud partitsioonilt kõik failid. + Vali, kuhu soovid %1 paigaldada.<br/><font color="red">Hoiatus: </font>see kustutab valitud partitsioonilt kõik failid. @@ -1957,17 +1957,17 @@ Väljund: %1 cannot be installed on empty space. Please select an existing partition. - %1 ei saa installida tühjale kohale. Palun vali olemasolev partitsioon. + %1 ei saa paigldada tühjale kohale. Palun vali olemasolev partitsioon. %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. - %1 ei saa installida laiendatud partitsioonile. Palun vali olemasolev põhiline või loogiline partitsioon. + %1 ei saa paigaldada laiendatud partitsioonile. Palun vali olemasolev põhiline või loogiline partitsioon. %1 cannot be installed on this partition. - %1 ei saa installida sellele partitsioonidel. + %1 ei saa sellele partitsioonile paigaldada. @@ -1999,7 +1999,7 @@ Väljund: <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. - <strong>%3</strong><br/><br/>%1 installitakse partitsioonile %2.<br/><font color="red">Hoiatus: </font>kõik andmed partitsioonil %2 kaovad. + <strong>%3</strong><br/><br/>%1 paigaldatakse partitsioonile %2.<br/><font color="red">Hoiatus: </font>kõik andmed partitsioonil %2 kaovad. @@ -2062,12 +2062,12 @@ Väljund: The installer is not running with administrator rights. - Installija ei tööta administraatoriõigustega. + Paigaldaja pole käivitatud administraatoriõigustega. The screen is too small to display the installer. - Ekraan on liiga väike installija kuvamiseks. + Ekraan on paigaldaja kuvamiseks liiga väike. @@ -2090,7 +2090,7 @@ Väljund: The installer failed to resize partition %1 on disk '%2'. - Installijal ebaõnnestus partitsiooni %1 suuruse muutmine kettal "%2". + Paigaldajal ebaõnnestus partitsiooni %1 suuruse muutmine kettal "%2". @@ -2246,7 +2246,7 @@ Väljund: The installer failed to set flags on partition %1. - Installija ei suutnud silte määrata partitsioonile %1. + Paigaldaja ei suutnud partitsioonile %1 silte määrata. @@ -2352,7 +2352,7 @@ Väljund: This is an overview of what will happen once you start the install procedure. - See on ülevaade sellest mis juhtub, kui alustad installiprotseduuri. + See on ülevaade sellest mis juhtub, kui alustad paigaldusprotseduuri. @@ -2368,17 +2368,17 @@ Väljund: Installation feedback - Installimise tagasiside + Paigalduse tagasiside Sending installation feedback. - Saadan installimise tagasisidet. + Saadan paigalduse tagasisidet. Internal error in install-tracking. - Installi jälitamisel esines sisemine viga. + Paigaldate jälitamisel esines sisemine viga. @@ -2430,7 +2430,7 @@ Väljund: <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> - <html><head/><body><p>Seda valides <span style=" font-weight:600;">ei saada sa üldse</span> teavet oma installi kohta.</p></body></html> + <html><head/><body><p>Seda valides <span style=" font-weight:600;">ei saada sa üldse</span> teavet oma paigalduse kohta.</p></body></html> @@ -2454,22 +2454,22 @@ Väljund: Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. - Installijälitamine aitab %1-l näha, mitu kasutajat neil on, mis riistvarale nad %1 installivad ja (märkides kaks alumist valikut) saada pidevat teavet eelistatud rakenduste kohta. Et näha, mis infot saadetakse, palun klõpsa abiikooni iga ala kõrval. + Paigalduse jälitamine aitab %1-l näha, mitu kasutajat neil on, mis riistvarale nad %1 paigaldavad ja (märkides kaks alumist valikut) saada pidevat teavet eelistatud rakenduste kohta. Et näha, mis infot saadetakse, palun klõpsa abiikooni iga ala kõrval. By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - Seda valides saadad sa teavet oma installi ja riistvara kohta. See teave <b>saadetakse ainult korra</b>peale installi lõppu. + Seda valides saadad sa teavet oma paigalduse ja riistvara kohta. See teave <b>saadetakse ainult korra</b>peale paigalduse lõppu. By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - Seda valides saadad sa %1-le <b>perioodiliselt</b> infot oma installi, riistvara ja rakenduste kohta. + Seda valides saadad sa %1-le <b>perioodiliselt</b> infot oma paigalduse, riistvara ja rakenduste kohta. By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - Seda valides saadad sa %1-le <b>regulaarselt</b> infot oma installi, riistvara, rakenduste ja kasutusharjumuste kohta. + Seda valides saadad sa %1-le <b>regulaarselt</b> infot oma paigalduse, riistvara, rakenduste ja kasutusharjumuste kohta. @@ -2557,17 +2557,17 @@ Väljund: <h1>Welcome to the %1 installer.</h1> - <h1>Tere tulemast %1 installijasse.</h1> + <h1>Tere tulemast %1 paigaldajasse.</h1> <h1>Welcome to the Calamares installer for %1.</h1> - <h1>Tere tulemast Calamares'i installijasse %1 jaoks.</h1> + <h1>Tere tulemast Calamares'i paigaldajasse %1 jaoks.</h1> About %1 installer - Teave %1 installija kohta + Teave %1 paigaldaja kohta diff --git a/lang/calamares_ko.ts b/lang/calamares_ko.ts new file mode 100644 index 000000000..73b81b498 --- /dev/null +++ b/lang/calamares_ko.ts @@ -0,0 +1,2587 @@ + + + BootInfoWidget + + + 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. + + + + + This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. + + + + + 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. + + + + + BootLoaderModel + + + Master Boot Record of %1 + + + + + Boot Partition + + + + + System Partition + + + + + Do not install a boot loader + + + + + %1 (%2) + + + + + Calamares::DebugWindow + + + Form + + + + + GlobalStorage + + + + + JobQueue + + + + + Modules + + + + + Type: + + + + + + none + + + + + Interface: + + + + + Tools + + + + + Debug information + + + + + Calamares::ExecutionViewStep + + + Install + + + + + Calamares::JobThread + + + Done + + + + + Calamares::ProcessJob + + + Run command %1 %2 + + + + + Running command %1 %2 + + + + + Calamares::PythonJob + + + 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. + + + + + Boost.Python error in job "%1". + + + + + Calamares::ViewManager + + + &Back + + + + + + &Next + + + + + + &Cancel + + + + + + Cancel installation without changing the system. + + + + + &Install + + + + + Cancel installation? + + + + + Do you really want to cancel the current install process? +The installer will quit and all changes will be lost. + + + + + &Yes + + + + + &No + + + + + &Close + + + + + Continue with setup? + + + + + 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> + + + + + &Install now + + + + + Go &back + + + + + &Done + + + + + The installation is complete. Close the installer. + + + + + Error + + + + + Installation Failed + + + + + CalamaresPython::Helper + + + Unknown exception type + + + + + unparseable Python error + + + + + unparseable Python traceback + + + + + Unfetchable Python error. + + + + + CalamaresWindow + + + %1 Installer + + + + + Show debug information + + + + + CheckerWidget + + + This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> + + + + + This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled. + + + + + This program will ask you some questions and set up %2 on your computer. + + + + + For best results, please ensure that this computer: + + + + + System requirements + + + + + ChoicePage + + + Form + + + + + After: + + + + + <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. + + + + + Boot loader location: + + + + + %1 will be shrunk to %2MB and a new %3MB partition will be created for %4. + + + + + Select storage de&vice: + + + + + + + + Current: + + + + + Reuse %1 as home partition for %2. + + + + + <strong>Select a partition to shrink, then drag the bottom bar to resize</strong> + + + + + <strong>Select a partition to install on</strong> + + + + + An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + 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. + + + + + 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. + + + + + + + + <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 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. + + + + + ClearMountsJob + + + Clear mounts for partitioning operations on %1 + + + + + Clearing mounts for partitioning operations on %1. + + + + + Cleared all mounts for %1 + + + + + ClearTempMountsJob + + + Clear all temporary mounts. + + + + + Clearing all temporary mounts. + + + + + Cannot get list of temporary mounts. + + + + + Cleared all temporary mounts. + + + + + CommandList + + + + Could not run command. + + + + + The command runs in the host environment and needs to know the root path, but no rootMountPoint is defined. + + + + + The command needs to know the user's name, but no username is defined. + + + + + ContextualProcessJob + + + Contextual Processes Job + + + + + CreatePartitionDialog + + + Create a Partition + + + + + MiB + + + + + Partition &Type: + + + + + &Primary + + + + + E&xtended + + + + + Fi&le System: + + + + + LVM LV name + + + + + Flags: + + + + + &Mount Point: + + + + + Si&ze: + + + + + En&crypt + + + + + Logical + + + + + Primary + + + + + GPT + + + + + Mountpoint already in use. Please select another one. + + + + + CreatePartitionJob + + + Create new %2MB partition on %4 (%3) with file system %1. + + + + + Create new <strong>%2MB</strong> partition on <strong>%4</strong> (%3) with file system <strong>%1</strong>. + + + + + Creating new %1 partition on %2. + + + + + The installer failed to create partition on disk '%1'. + + + + + CreatePartitionTableDialog + + + Create Partition Table + + + + + Creating a new partition table will delete all existing data on the disk. + + + + + What kind of partition table do you want to create? + + + + + Master Boot Record (MBR) + + + + + GUID Partition Table (GPT) + + + + + CreatePartitionTableJob + + + Create new %1 partition table on %2. + + + + + Create new <strong>%1</strong> partition table on <strong>%2</strong> (%3). + + + + + Creating new %1 partition table on %2. + + + + + The installer failed to create a partition table on %1. + + + + + CreateUserJob + + + Create user %1 + + + + + Create user <strong>%1</strong>. + + + + + Creating user %1. + + + + + Sudoers dir is not writable. + + + + + Cannot create sudoers file for writing. + + + + + Cannot chmod sudoers file. + + + + + Cannot open groups file for reading. + + + + + DeletePartitionJob + + + Delete partition %1. + + + + + Delete partition <strong>%1</strong>. + + + + + Deleting partition %1. + + + + + The installer failed to delete partition %1. + + + + + DeviceInfoWidget + + + The type of <strong>partition table</strong> on the selected storage device.<br><br>The only way to change the partition table type is to erase and recreate the partition table from scratch, which destroys all data on the storage device.<br>This installer will keep the current partition table unless you explicitly choose otherwise.<br>If unsure, on modern systems GPT is preferred. + + + + + This device has a <strong>%1</strong> partition table. + + + + + This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. + + + + + This installer <strong>cannot detect a partition table</strong> on the selected storage device.<br><br>The device either has no partition table, or the partition table is corrupted or of an unknown type.<br>This installer can create a new partition table for you, either automatically, or through the manual partitioning page. + + + + + <br><br>This is the recommended partition table type for modern systems which start from an <strong>EFI</strong> boot environment. + + + + + <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. + + + + + DeviceModel + + + %1 - %2 (%3) + + + + + DracutLuksCfgJob + + + Write LUKS configuration for Dracut to %1 + + + + + Skip writing LUKS configuration for Dracut: "/" partition is not encrypted + + + + + Failed to open %1 + + + + + DummyCppJob + + + Dummy C++ Job + + + + + EditExistingPartitionDialog + + + Edit Existing Partition + + + + + Content: + + + + + &Keep + + + + + Format + + + + + Warning: Formatting the partition will erase all existing data. + + + + + &Mount Point: + + + + + Si&ze: + + + + + MiB + + + + + Fi&le System: + + + + + Flags: + + + + + Mountpoint already in use. Please select another one. + + + + + EncryptWidget + + + Form + + + + + En&crypt system + + + + + Passphrase + + + + + Confirm passphrase + + + + + Please enter the same passphrase in both boxes. + + + + + FillGlobalStorageJob + + + Set partition information + + + + + Install %1 on <strong>new</strong> %2 system partition. + + + + + Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>. + + + + + Install %2 on %3 system partition <strong>%1</strong>. + + + + + Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>. + + + + + Install boot loader on <strong>%1</strong>. + + + + + Setting up mount points. + + + + + FinishedPage + + + Form + + + + + <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> + + + + + &Restart now + + + + + <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. + + + + + <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. + + + + + FinishedViewStep + + + Finish + + + + + Installation Complete + + + + + The installation of %1 is complete. + + + + + FormatPartitionJob + + + Format partition %1 (file system: %2, size: %3 MB) on %4. + + + + + Format <strong>%3MB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>. + + + + + Formatting partition %1 with file system %2. + + + + + The installer failed to format partition %1 on disk '%2'. + + + + + InteractiveTerminalPage + + + Konsole not installed + + + + + Please install KDE Konsole and try again! + + + + + Executing script: &nbsp;<code>%1</code> + + + + + InteractiveTerminalViewStep + + + Script + + + + + KeyboardPage + + + Set keyboard model to %1.<br/> + + + + + Set keyboard layout to %1/%2. + + + + + KeyboardViewStep + + + Keyboard + + + + + LCLocaleDialog + + + System locale setting + + + + + 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>. + + + + + &Cancel + + + + + &OK + + + + + LicensePage + + + Form + + + + + I accept the terms and conditions above. + + + + + <h1>License Agreement</h1>This setup procedure will install proprietary software that is subject to licensing terms. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, the setup procedure cannot continue. + + + + + <h1>License Agreement</h1>This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience. + + + + + Please review the End User License Agreements (EULAs) above.<br/>If you do not agree with the terms, proprietary software will not be installed, and open source alternatives will be used instead. + + + + + <strong>%1 driver</strong><br/>by %2 + %1 is an untranslatable product name, example: Creative Audigy driver + + + + + <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> + %1 is usually a vendor name, example: Nvidia graphics driver + + + + + <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 codec</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1 package</strong><br/><font color="Grey">by %2</font> + + + + + <strong>%1</strong><br/><font color="Grey">by %2</font> + + + + + <a href="%1">view license agreement</a> + + + + + LicenseViewStep + + + License + + + + + LocalePage + + + The system language will be set to %1. + + + + + The numbers and dates locale will be set to %1. + + + + + Region: + + + + + Zone: + + + + + + &Change... + + + + + Set timezone to %1/%2.<br/> + + + + + %1 (%2) + Language (Country) + + + + + LocaleViewStep + + + Loading location data... + + + + + Location + + + + + NetInstallPage + + + Name + + + + + Description + + + + + Network Installation. (Disabled: Unable to fetch package lists, check your network connection) + + + + + Network Installation. (Disabled: Received invalid groups data) + + + + + NetInstallViewStep + + + Package selection + + + + + PWQ + + + Password is too short + + + + + Password is too long + + + + + Password is too weak + + + + + Memory allocation error when setting '%1' + + + + + Memory allocation error + + + + + The password is the same as the old one + + + + + The password is a palindrome + + + + + The password differs with case changes only + + + + + The password is too similar to the old one + + + + + The password contains the user name in some form + + + + + The password contains words from the real name of the user in some form + + + + + The password contains forbidden words in some form + + + + + The password contains less than %1 digits + + + + + The password contains too few digits + + + + + The password contains less than %1 uppercase letters + + + + + The password contains too few uppercase letters + + + + + The password contains less than %1 lowercase letters + + + + + The password contains too few lowercase letters + + + + + The password contains less than %1 non-alphanumeric characters + + + + + The password contains too few non-alphanumeric characters + + + + + The password is shorter than %1 characters + + + + + The password is too short + + + + + The password is just rotated old one + + + + + The password contains less than %1 character classes + + + + + The password does not contain enough character classes + + + + + The password contains more than %1 same characters consecutively + + + + + The password contains too many same characters consecutively + + + + + The password contains more than %1 characters of the same class consecutively + + + + + The password contains too many characters of the same class consecutively + + + + + The password contains monotonic sequence longer than %1 characters + + + + + The password contains too long of a monotonic character sequence + + + + + No password supplied + + + + + Cannot obtain random numbers from the RNG device + + + + + Password generation failed - required entropy too low for settings + + + + + The password fails the dictionary check - %1 + + + + + The password fails the dictionary check + + + + + Unknown setting - %1 + + + + + Unknown setting + + + + + Bad integer value of setting - %1 + + + + + Bad integer value + + + + + Setting %1 is not of integer type + + + + + Setting is not of integer type + + + + + Setting %1 is not of string type + + + + + Setting is not of string type + + + + + Opening the configuration file failed + + + + + The configuration file is malformed + + + + + Fatal failure + + + + + Unknown error + + + + + Page_Keyboard + + + Form + + + + + Keyboard Model: + + + + + Type here to test your keyboard + + + + + Page_UserSetup + + + Form + + + + + What is your name? + + + + + What name do you want to use to log in? + + + + + + + font-weight: normal + + + + + <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> + + + + + Choose a password to keep your account safe. + + + + + <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> + + + + + What is the name of this computer? + + + + + <small>This name will be used if you make the computer visible to others on a network.</small> + + + + + Log in automatically without asking for the password. + + + + + Use the same password for the administrator account. + + + + + Choose a password for the administrator account. + + + + + <small>Enter the same password twice, so that it can be checked for typing errors.</small> + + + + + PartitionLabelsView + + + Root + + + + + Home + + + + + Boot + + + + + EFI system + + + + + Swap + + + + + New partition for %1 + + + + + New partition + + + + + %1 %2 + + + + + PartitionModel + + + + Free Space + + + + + + New partition + + + + + Name + + + + + File System + + + + + Mount Point + + + + + Size + + + + + PartitionPage + + + Form + + + + + Storage de&vice: + + + + + &Revert All Changes + + + + + New Partition &Table + + + + + &Create + + + + + &Edit + + + + + &Delete + + + + + Install boot &loader on: + + + + + Are you sure you want to create a new partition table on %1? + + + + + Can not create new partition + + + + + 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. + + + + + PartitionViewStep + + + Gathering system information... + + + + + Partitions + + + + + Install %1 <strong>alongside</strong> another operating system. + + + + + <strong>Erase</strong> disk and install %1. + + + + + <strong>Replace</strong> a partition with %1. + + + + + <strong>Manual</strong> partitioning. + + + + + Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3). + + + + + <strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1. + + + + + <strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1. + + + + + <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). + + + + + Disk <strong>%1</strong> (%2) + + + + + Current: + + + + + After: + + + + + No EFI system partition configured + + + + + An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>esp</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start. + + + + + EFI system partition flag not set + + + + + An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>esp</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start. + + + + + 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. + + + + + PlasmaLnfJob + + + Plasma Look-and-Feel Job + + + + + + Could not select KDE Plasma Look-and-Feel package + + + + + PlasmaLnfPage + + + Form + + + + + Placeholder + + + + + 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 installed. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel. + + + + + PlasmaLnfViewStep + + + Look-and-Feel + + + + + PreserveFiles + + + Saving files for later ... + + + + + No files configured to save for later. + + + + + Not all of the configured files could be preserved. + + + + + ProcessResult + + + +There was no output from the command. + + + + + +Output: + + + + + + External command crashed. + + + + + Command <i>%1</i> crashed. + + + + + External command failed to start. + + + + + Command <i>%1</i> failed to start. + + + + + Internal error when starting command. + + + + + Bad parameters for process job call. + + + + + External command failed to finish. + + + + + Command <i>%1</i> failed to finish in %2 seconds. + + + + + External command finished with errors. + + + + + Command <i>%1</i> finished with exit code %2. + + + + + QObject + + + Default Keyboard Model + + + + + + Default + + + + + unknown + + + + + extended + + + + + unformatted + + + + + swap + + + + + Unpartitioned space or unknown partition table + + + + + ReplaceWidget + + + Form + + + + + Select where to install %1.<br/><font color="red">Warning: </font>this will delete all files on the selected partition. + + + + + The selected item does not appear to be a valid partition. + + + + + %1 cannot be installed on empty space. Please select an existing partition. + + + + + %1 cannot be installed on an extended partition. Please select an existing primary or logical partition. + + + + + %1 cannot be installed on this partition. + + + + + Data partition (%1) + + + + + Unknown system partition (%1) + + + + + %1 system partition (%2) + + + + + <strong>%4</strong><br/><br/>The partition %1 is too small for %2. Please select a partition with capacity at least %3 GiB. + + + + + <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. + + + + + + + <strong>%3</strong><br/><br/>%1 will be installed on %2.<br/><font color="red">Warning: </font>all data on partition %2 will be lost. + + + + + The EFI system partition at %1 will be used for starting %2. + + + + + EFI system partition: + + + + + RequirementsChecker + + + Gathering system information... + + + + + has at least %1 GB available drive space + + + + + There is not enough drive space. At least %1 GB is required. + + + + + has at least %1 GB working memory + + + + + The system does not have enough working memory. At least %1 GB is required. + + + + + is plugged in to a power source + + + + + The system is not plugged in to a power source. + + + + + is connected to the Internet + + + + + The system is not connected to the Internet. + + + + + The installer is not running with administrator rights. + + + + + The screen is too small to display the installer. + + + + + ResizePartitionJob + + + Resize partition %1. + + + + + Resize <strong>%2MB</strong> partition <strong>%1</strong> to <strong>%3MB</strong>. + + + + + Resizing %2MB partition %1 to %3MB. + + + + + The installer failed to resize partition %1 on disk '%2'. + + + + + ScanningDialog + + + Scanning storage devices... + + + + + Partitioning + + + + + SetHostNameJob + + + Set hostname %1 + + + + + Set hostname <strong>%1</strong>. + + + + + Setting hostname %1. + + + + + + Internal Error + + + + + + Cannot write hostname to target system + + + + + SetKeyboardLayoutJob + + + Set keyboard model to %1, layout to %2-%3 + + + + + Failed to write keyboard configuration for the virtual console. + + + + + + + Failed to write to %1 + + + + + Failed to write keyboard configuration for X11. + + + + + Failed to write keyboard configuration to existing /etc/default directory. + + + + + SetPartFlagsJob + + + Set flags on partition %1. + + + + + Set flags on %1MB %2 partition. + + + + + Set flags on new partition. + + + + + Clear flags on partition <strong>%1</strong>. + + + + + Clear flags on %1MB <strong>%2</strong> partition. + + + + + Clear flags on new partition. + + + + + Flag partition <strong>%1</strong> as <strong>%2</strong>. + + + + + Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. + + + + + Flag new partition as <strong>%1</strong>. + + + + + Clearing flags on partition <strong>%1</strong>. + + + + + Clearing flags on %1MB <strong>%2</strong> partition. + + + + + Clearing flags on new partition. + + + + + Setting flags <strong>%2</strong> on partition <strong>%1</strong>. + + + + + Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. + + + + + Setting flags <strong>%1</strong> on new partition. + + + + + The installer failed to set flags on partition %1. + + + + + SetPasswordJob + + + Set password for user %1 + + + + + Setting password for user %1. + + + + + Bad destination system path. + + + + + rootMountPoint is %1 + + + + + Cannot disable root account. + + + + + passwd terminated with error code %1. + + + + + Cannot set password for user %1. + + + + + usermod terminated with error code %1. + + + + + SetTimezoneJob + + + Set timezone to %1/%2 + + + + + Cannot access selected timezone path. + + + + + Bad path: %1 + + + + + Cannot set timezone. + + + + + Link creation failed, target: %1; link name: %2 + + + + + Cannot set timezone, + + + + + Cannot open /etc/timezone for writing + + + + + ShellProcessJob + + + Shell Processes Job + + + + + SlideCounter + + + %L1 / %L2 + slide counter, %1 of %2 (numeric) + + + + + SummaryPage + + + This is an overview of what will happen once you start the install procedure. + + + + + SummaryViewStep + + + Summary + + + + + TrackingInstallJob + + + Installation feedback + + + + + Sending installation feedback. + + + + + Internal error in install-tracking. + + + + + HTTP request timed out. + + + + + TrackingMachineNeonJob + + + Machine feedback + + + + + Configuring machine feedback. + + + + + + Error in machine feedback configuration. + + + + + Could not configure machine feedback correctly, script error %1. + + + + + Could not configure machine feedback correctly, Calamares error %1. + + + + + TrackingPage + + + Form + + + + + Placeholder + + + + + <html><head/><body><p>By selecting this, you will send <span style=" font-weight:600;">no information at all</span> about your installation.</p></body></html> + + + + + + + TextLabel + + + + + + + ... + + + + + <html><head/><body><p><a href="placeholder"><span style=" text-decoration: underline; color:#2980b9;">Click here for more information about user feedback</span></a></p></body></html> + + + + + Install tracking helps %1 to see how many users they have, what hardware they install %1 to and (with the last two options below), get continuous information about preferred applications. To see what will be sent, please click the help icon next to each area. + + + + + By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. + + + + + By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. + + + + + By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. + + + + + TrackingViewStep + + + Feedback + + + + + UsersPage + + + Your username is too long. + + + + + Your username contains invalid characters. Only lowercase letters and numbers are allowed. + + + + + Your hostname is too short. + + + + + Your hostname is too long. + + + + + Your hostname contains invalid characters. Only letters, numbers and dashes are allowed. + + + + + + Your passwords do not match! + + + + + UsersViewStep + + + Users + + + + + WelcomePage + + + Form + + + + + &Language: + + + + + &Release notes + + + + + &Known issues + + + + + &Support + + + + + &About + + + + + <h1>Welcome to the %1 installer.</h1> + + + + + <h1>Welcome to the Calamares installer for %1.</h1> + + + + + About %1 installer + + + + + <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 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg 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. + + + + + %1 support + + + + + WelcomeViewStep + + + Welcome + + + + \ No newline at end of file diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index 3b6df235c..b8b639ba0 100644 Binary files a/lang/python/es_MX/LC_MESSAGES/python.mo and b/lang/python/es_MX/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_MX/LC_MESSAGES/python.po b/lang/python/es_MX/LC_MESSAGES/python.po index 386952128..45fc72c65 100644 --- a/lang/python/es_MX/LC_MESSAGES/python.po +++ b/lang/python/es_MX/LC_MESSAGES/python.po @@ -10,6 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: guillermo pacheco , 2018\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,39 +20,39 @@ msgstr "" #: src/modules/umount/main.py:40 msgid "Unmount file systems." -msgstr "" +msgstr "Desmontar sistemas de archivo." #: src/modules/dummypython/main.py:44 msgid "Dummy python job." -msgstr "" +msgstr "Trabajo python ficticio." #: src/modules/dummypython/main.py:97 msgid "Dummy python step {}" -msgstr "" +msgstr "Paso python ficticio {}" #: src/modules/machineid/main.py:35 msgid "Generate machine-id." -msgstr "" +msgstr "Generar identificación de la maquina." #: src/modules/packages/main.py:61 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Procesando paquetes (%(count)d/%(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." -msgstr "" +msgstr "Instalar paquetes." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Instalando un paquete." +msgstr[1] "Instalando%(num)d paquetes." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Removiendo un paquete." +msgstr[1] "Removiendo %(num)dpaquetes." diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 89b3804b5..2fea8bab0 100644 Binary files a/lang/python/et/LC_MESSAGES/python.mo and b/lang/python/et/LC_MESSAGES/python.mo differ diff --git a/lang/python/et/LC_MESSAGES/python.po b/lang/python/et/LC_MESSAGES/python.po index eeccccc30..ccd9b1b7d 100644 --- a/lang/python/et/LC_MESSAGES/python.po +++ b/lang/python/et/LC_MESSAGES/python.po @@ -41,18 +41,18 @@ msgstr "Pakkide töötlemine (%(count)d / %(total)d)" #: src/modules/packages/main.py:63 src/modules/packages/main.py:73 msgid "Install packages." -msgstr "Installi pakid." +msgstr "Paigalda paketid." #: src/modules/packages/main.py:66 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "Installin ühe paki." -msgstr[1] "Installin %(num)d pakki." +msgstr[0] "Paigaldan ühe paketi." +msgstr[1] "Paigaldan %(num)d paketti." #: src/modules/packages/main.py:69 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "Eemaldan ühe paki." -msgstr[1] "Eemaldan %(num)d pakki." +msgstr[0] "Eemaldan ühe paketi." +msgstr[1] "Eemaldan %(num)d paketti." diff --git a/lang/python/ko/LC_MESSAGES/python.mo b/lang/python/ko/LC_MESSAGES/python.mo new file mode 100644 index 000000000..9dfa007bd Binary files /dev/null and b/lang/python/ko/LC_MESSAGES/python.mo differ diff --git a/lang/python/ko/LC_MESSAGES/python.po b/lang/python/ko/LC_MESSAGES/python.po new file mode 100644 index 000000000..7ac2b3d4d --- /dev/null +++ b/lang/python/ko/LC_MESSAGES/python.po @@ -0,0 +1,55 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/umount/main.py:40 +msgid "Unmount file systems." +msgstr "" + +#: src/modules/dummypython/main.py:44 +msgid "Dummy python job." +msgstr "" + +#: src/modules/dummypython/main.py:97 +msgid "Dummy python step {}" +msgstr "" + +#: src/modules/machineid/main.py:35 +msgid "Generate machine-id." +msgstr "" + +#: src/modules/packages/main.py:61 +#, python-format +msgid "Processing packages (%(count)d / %(total)d)" +msgstr "" + +#: src/modules/packages/main.py:63 src/modules/packages/main.py:73 +msgid "Install packages." +msgstr "" + +#: src/modules/packages/main.py:66 +#, python-format +msgid "Installing one package." +msgid_plural "Installing %(num)d packages." +msgstr[0] "" + +#: src/modules/packages/main.py:69 +#, python-format +msgid "Removing one package." +msgid_plural "Removing %(num)d packages." +msgstr[0] "" diff --git a/src/branding/README.md b/src/branding/README.md index 6503bef49..f85ad8f67 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -24,9 +24,11 @@ so that it can be run directly from the build directory for testing purposes: Since the slideshow can be **any** QML, it is limited only by your designers imagination and your QML experience. For straightforward presentations, -see the documentation below. There are more examples in the *calamares-branding* +see the documentation below. There are more examples in the [calamares-branding][1] repository. +[1] https://github.com/calamares/calamares-branding + ## Translations QML files in a branding component can be translated. Translations should diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index ad7c92783..b724a4832 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +31,7 @@ Presentation repeat: true onTriggered: presentation.goToNextSlide() } - + Slide { Image { diff --git a/src/calamares/CalamaresApplication.cpp b/src/calamares/CalamaresApplication.cpp index 2bb0af8df..e41516c60 100644 --- a/src/calamares/CalamaresApplication.cpp +++ b/src/calamares/CalamaresApplication.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,10 +50,10 @@ CalamaresApplication::CalamaresApplication( int& argc, char* argv[] ) // //, so we end up with ~/.cache/Calamares/calamares/ // which is excessively squidly. // - // setOrganizationName( QLatin1String( CALAMARES_ORGANIZATION_NAME ) ); - setOrganizationDomain( QLatin1String( CALAMARES_ORGANIZATION_DOMAIN ) ); - setApplicationName( QLatin1String( CALAMARES_APPLICATION_NAME ) ); - setApplicationVersion( QLatin1String( CALAMARES_VERSION ) ); + // setOrganizationName( QStringLiteral( CALAMARES_ORGANIZATION_NAME ) ); + setOrganizationDomain( QStringLiteral( CALAMARES_ORGANIZATION_DOMAIN ) ); + setApplicationName( QStringLiteral( CALAMARES_APPLICATION_NAME ) ); + setApplicationVersion( QStringLiteral( CALAMARES_VERSION ) ); cDebug() << "Calamares version:" << CALAMARES_VERSION; @@ -335,6 +336,8 @@ CalamaresApplication::initView() connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, this, &CalamaresApplication::initViewSteps ); + connect( m_moduleManager, &Calamares::ModuleManager::modulesFailed, + this, &CalamaresApplication::initFailed ); m_moduleManager->loadModules(); @@ -356,6 +359,12 @@ CalamaresApplication::initViewSteps() cDebug() << "STARTUP: Window now visible and ProgressTreeView populated"; } +void +CalamaresApplication::initFailed(const QStringList& l) +{ + cError() << "STARTUP: failed modules are" << l; + m_mainwindow->show(); +} void CalamaresApplication::initJobQueue() diff --git a/src/calamares/CalamaresApplication.h b/src/calamares/CalamaresApplication.h index 3cfd4f79f..f9c919aa6 100644 --- a/src/calamares/CalamaresApplication.h +++ b/src/calamares/CalamaresApplication.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -70,6 +71,7 @@ public: private slots: void initView(); void initViewSteps(); + void initFailed( const QStringList& l ); private: void initQmlPath(); diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index 1c1ba2181..d4bd2743d 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/Job.h b/src/libcalamares/Job.h index 6063633b8..040ead6ad 100644 --- a/src/libcalamares/Job.h +++ b/src/libcalamares/Job.h @@ -66,8 +66,15 @@ public: virtual QString prettyDescription() const; virtual QString prettyStatusMessage() const; virtual JobResult exec() = 0; + + bool isEmergency() const { return m_emergency; } + void setEmergency( bool e ) { m_emergency = e; } + signals: void progress( qreal percent ); + +private: + bool m_emergency = false; }; } // namespace Calamares diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index 339fd8457..46d58d429 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,22 +51,36 @@ public: void run() override { + bool anyFailed = false; + QString message; + QString details; + m_jobIndex = 0; for( auto job : m_jobs ) { + if ( anyFailed && !job->isEmergency() ) + { + cDebug() << "Skipping non-emergency job" << job->prettyName(); + continue; + } + emitProgress(); - cDebug() << "Starting job" << job->prettyName(); + cDebug() << "Starting" << ( anyFailed ? "EMERGENCY JOB" : "job" ) << job->prettyName(); connect( job.data(), &Job::progress, this, &JobThread::emitProgress ); JobResult result = job->exec(); - if ( !result ) + if ( !anyFailed && !result ) { - emitFailed( result.message(), result.details() ); - emitFinished(); - return; + anyFailed = true; + message = result.message(); + details = result.details(); } - ++m_jobIndex; + if ( !anyFailed ) + ++m_jobIndex; } - emitProgress(); + if ( anyFailed ) + emitFailed( message, details ); + else + emitProgress(); emitFinished(); } diff --git a/src/libcalamares/ProcessJob.cpp b/src/libcalamares/ProcessJob.cpp index 55e25254c..3cf4eec49 100644 --- a/src/libcalamares/ProcessJob.cpp +++ b/src/libcalamares/ProcessJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/ProcessJob.h b/src/libcalamares/ProcessJob.h index 59a532023..d01dbb676 100644 --- a/src/libcalamares/ProcessJob.h +++ b/src/libcalamares/ProcessJob.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonHelper.cpp b/src/libcalamares/PythonHelper.cpp index e5eb85084..d6001055e 100644 --- a/src/libcalamares/PythonHelper.cpp +++ b/src/libcalamares/PythonHelper.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonHelper.h b/src/libcalamares/PythonHelper.h index d48e5eaab..693d80d8b 100644 --- a/src/libcalamares/PythonHelper.h +++ b/src/libcalamares/PythonHelper.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp index 92dbedef9..65a5c4506 100644 --- a/src/libcalamares/PythonJob.cpp +++ b/src/libcalamares/PythonJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonJobApi.cpp b/src/libcalamares/PythonJobApi.cpp index a5bae6149..f540c2683 100644 --- a/src/libcalamares/PythonJobApi.cpp +++ b/src/libcalamares/PythonJobApi.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/PythonJobApi.h b/src/libcalamares/PythonJobApi.h index 0e68d7936..a19a0581b 100644 --- a/src/libcalamares/PythonJobApi.h +++ b/src/libcalamares/PythonJobApi.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 732afa8d8..80f6836bb 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +30,32 @@ #include +/** Helper function to grab a QString out of the config, and to warn if not present. */ +static QString +requireString( const YAML::Node& config, const char* key ) +{ + if ( config[ key ] ) + return QString::fromStdString( config[ key ].as< std::string >() ); + else + { + cWarning() << "Required settings.conf key" << key << "is missing."; + return QString(); + } +} + +/** Helper function to grab a bool out of the config, and to warn if not present. */ +static bool +requireBool( const YAML::Node& config, const char* key, bool d ) +{ + if ( config[ key ] ) + return config[ key ].as< bool >(); + else + { + cWarning() << "Required settings.conf key" << key << "is missing."; + return d; + } +} + namespace Calamares { @@ -41,7 +67,6 @@ Settings::instance() return s_instance; } - Settings::Settings( const QString& settingsFilePath, bool debugMode, QObject* parent ) @@ -148,11 +173,9 @@ Settings::Settings( const QString& settingsFilePath, } } - m_brandingComponentName = QString::fromStdString( config[ "branding" ] - .as< std::string >() ); - m_promptInstall = config[ "prompt-install" ].as< bool >(); - - m_doChroot = config[ "dont-chroot" ] ? !config[ "dont-chroot" ].as< bool >() : true; + m_brandingComponentName = requireString( config, "branding" ); + m_promptInstall = requireBool( config, "prompt-install", false ); + m_doChroot = requireBool( config, "dont-chroot", true ); } catch ( YAML::Exception& e ) { @@ -175,7 +198,7 @@ Settings::modulesSearchPaths() const } -QList > +Settings::InstanceDescriptionList Settings::customModuleInstances() const { return m_customModuleInstances; diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 42720b986..2330f5747 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,7 +43,9 @@ public: QStringList modulesSearchPaths() const; - QList< QMap< QString, QString > > customModuleInstances() const; + using InstanceDescription = QMap< QString, QString >; + using InstanceDescriptionList = QList< InstanceDescription >; + InstanceDescriptionList customModuleInstances() const; QList< QPair< ModuleAction, QStringList > > modulesSequence() const; @@ -60,7 +62,7 @@ private: QStringList m_modulesSearchPaths; - QList< QMap< QString, QString > > m_customModuleInstances; + InstanceDescriptionList m_customModuleInstances; QList< QPair< ModuleAction, QStringList > > m_modulesSequence; QString m_brandingComponentName; diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index dde3f9a13..6a892511a 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2013-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Originally from Tomahawk, portions: * Copyright 2010-2011, Christian Muehlhaeuser @@ -33,11 +34,9 @@ #include #include - -// stdc++ #include -using namespace std; +using std::cerr; namespace CalamaresUtils { diff --git a/src/libcalamares/utils/CalamaresUtils.h b/src/libcalamares/utils/CalamaresUtils.h index 13caf1cad..e64fe4eec 100644 --- a/src/libcalamares/utils/CalamaresUtils.h +++ b/src/libcalamares/utils/CalamaresUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2013-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Originally from Tomahawk, portions: * Copyright 2010-2011, Christian Muehlhaeuser diff --git a/src/libcalamares/utils/PluginFactory.cpp b/src/libcalamares/utils/PluginFactory.cpp index d53b6474f..124af16f4 100644 --- a/src/libcalamares/utils/PluginFactory.cpp +++ b/src/libcalamares/utils/PluginFactory.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Based on KPluginFactory from KCoreAddons, KDE project * Copyright 2007, Matthias Kretz diff --git a/src/libcalamares/utils/PluginFactory.h b/src/libcalamares/utils/PluginFactory.h index 0ca7917c4..22966b829 100644 --- a/src/libcalamares/utils/PluginFactory.h +++ b/src/libcalamares/utils/PluginFactory.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Based on KPluginFactory from KCoreAddons, KDE project * Copyright 2007, Matthias Kretz @@ -111,7 +111,7 @@ namespace Calamares * T(QObject *parent, const QVariantList &args) * \endcode * - * You should typically use CALAMARES_PLUGIN_FACTORY_DEFINITION() in your plugin code to + * You should typically use CALAMARES_PLUGIN_FACTORY_DEFINITION() in your plugin code to * create the factory. The pattern is * * \code diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index c71b1daa5..086e20b7d 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 6bbb285bb..efd0ebb29 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -15,6 +15,7 @@ set( calamaresui_SOURCES utils/qjsonitem.cpp viewpages/AbstractPage.cpp + viewpages/BlankViewStep.cpp viewpages/ViewStep.cpp widgets/ClickableLabel.cpp diff --git a/src/libcalamaresui/ExecutionViewStep.cpp b/src/libcalamaresui/ExecutionViewStep.cpp index 109bd1384..b505102a4 100644 --- a/src/libcalamaresui/ExecutionViewStep.cpp +++ b/src/libcalamaresui/ExecutionViewStep.cpp @@ -21,6 +21,7 @@ #include #include "Branding.h" +#include "Job.h" #include "JobQueue.h" #include "modulesystem/Module.h" #include "modulesystem/ModuleManager.h" @@ -142,7 +143,15 @@ ExecutionViewStep::onActivate() Calamares::Module* module = Calamares::ModuleManager::instance() ->moduleInstance( instanceKey ); if ( module ) - queue->enqueue( module->jobs() ); + { + auto jl = module->jobs(); + if ( module->isEmergency() ) + { + for( auto& j : jl ) + j->setEmergency( true ); + } + queue->enqueue( jl ); + } } queue->start(); diff --git a/src/libcalamaresui/ViewManager.cpp b/src/libcalamaresui/ViewManager.cpp index e597bf6a3..2b9f87db8 100644 --- a/src/libcalamaresui/ViewManager.cpp +++ b/src/libcalamaresui/ViewManager.cpp @@ -20,6 +20,7 @@ #include "ViewManager.h" #include "utils/Logger.h" +#include "viewpages/BlankViewStep.h" #include "viewpages/ViewStep.h" #include "ExecutionViewStep.h" #include "JobQueue.h" @@ -172,6 +173,27 @@ ViewManager::onInstallationFailed( const QString& message, const QString& detail } +void +ViewManager::onInitFailed( const QStringList& modules) +{ + QString title( tr( "Calamares Initialization Failed" ) ); + QString description( tr( "%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." ) ); + QString detailString; + + if ( modules.count() > 0 ) + { + description.append( tr( "
The following modules could not be loaded:" ) ); + QStringList details; + details << QLatin1Literal("
    "); + for( const auto& m : modules ) + details << QLatin1Literal("
  • ") << m << QLatin1Literal("
  • "); + details << QLatin1Literal("
"); + detailString = details.join( QString() ); + } + + insertViewStep( 0, new BlankViewStep( title, description.arg( *Calamares::Branding::ShortProductName ), detailString ) ); +} + ViewStepList ViewManager::viewSteps() const { diff --git a/src/libcalamaresui/ViewManager.h b/src/libcalamaresui/ViewManager.h index e4f215f8f..ee199f725 100644 --- a/src/libcalamaresui/ViewManager.h +++ b/src/libcalamaresui/ViewManager.h @@ -117,6 +117,12 @@ public slots: */ void onInstallationFailed( const QString& message, const QString& details ); + /** @brief Replaces the stack with a view step stating that initialization failed. + * + * @param modules a list of failed modules. + */ + void onInitFailed( const QStringList& modules ); + signals: void currentStepChanged(); void enlarge( QSize enlarge ) const; // See ViewStep::enlarge() diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 05394e69f..9b3be877f 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,6 +52,8 @@ name: "foo" #the module name. must be unique and same as the parent di interface: "qtplugin" #can be: qtplugin, python, process, ... */ +static const char EMERGENCY[] = "emergency"; + namespace Calamares { @@ -64,7 +66,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, const QString& configFileName, const QString& moduleDirectory ) { - Module* m = nullptr; + std::unique_ptr m; QString typeString = moduleDescriptor.value( "type" ).toString(); QString intfString = moduleDescriptor.value( "interface" ).toString(); @@ -79,12 +81,12 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, { if ( intfString == "qtplugin" ) { - m = new ViewModule(); + m.reset( new ViewModule() ); } else if ( intfString == "pythonqt" ) { #ifdef WITH_PYTHONQT - m = new PythonQtViewModule(); + m.reset( new PythonQtViewModule() ); #else cError() << "PythonQt view modules are not supported in this version of Calamares."; #endif @@ -96,16 +98,16 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, { if ( intfString == "qtplugin" ) { - m = new CppJobModule(); + m.reset( new CppJobModule() ); } else if ( intfString == "process" ) { - m = new ProcessJobModule(); + m.reset( new ProcessJobModule() ); } else if ( intfString == "python" ) { #ifdef WITH_PYTHON - m = new PythonJobModule(); + m.reset( new PythonJobModule() ); #else cError() << "Python modules are not supported in this version of Calamares."; #endif @@ -130,7 +132,6 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, else { cError() << "Bad module directory" << moduleDirectory << "for" << instanceId; - delete m; return nullptr; } @@ -144,10 +145,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, catch ( YAML::Exception& e ) { cError() << "YAML parser error " << e.what(); - delete m; return nullptr; } - return m; + return m.release(); } @@ -200,6 +200,9 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex } m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap(); + m_emergency = m_maybe_emergency + && m_configurationMap.contains( EMERGENCY ) + && m_configurationMap[ EMERGENCY ].toBool(); return; } else @@ -276,13 +279,6 @@ Module::interfaceString() const } -bool -Module::isLoaded() const -{ - return m_loaded; -} - - QVariantMap Module::configurationMap() { @@ -299,6 +295,11 @@ void Module::initFrom( const QVariantMap& moduleDescriptor ) { m_name = moduleDescriptor.value( "name" ).toString(); + + if ( moduleDescriptor.contains( EMERGENCY ) ) + { + m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); + } } } //ns diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 896d3b597..4fd0020f8 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -147,7 +147,7 @@ public: * @brief isLoaded reports on the loaded status of a module. * @return true if the module's loading phase has finished, otherwise false. */ - virtual bool isLoaded() const; + bool isLoaded() const { return m_loaded; } /** * @brief loadSelf initialized the module. @@ -155,6 +155,17 @@ public: */ virtual void loadSelf() = 0; + /** + * @brief Is this an emergency module? + * + * An emergency module is run even if an error occurs + * which would terminate Calamares earlier in the same + * *exec* block. Emergency modules in later exec blocks + * 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; } + /** * @brief jobs returns any jobs exposed by this module. * @return a list of jobs (can be empty). @@ -171,11 +182,15 @@ public: protected: explicit Module(); virtual void initFrom( const QVariantMap& moduleDescriptor ); - bool m_loaded; QVariantMap m_configurationMap; + bool m_loaded = false; + bool m_emergency = false; // Based on module and local config + bool m_maybe_emergency = false; // Based on the module.desc + private: void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception + QString m_name; QStringList m_requiredModules; QString m_directory; diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 83273e924..6d13c9564 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -154,12 +155,33 @@ ModuleManager::moduleInstance( const QString& instanceKey ) } +/** + * @brief Search a list of instance descriptions for one matching @p module and @p id + * + * @return -1 on failure, otherwise index of the instance that matches. + */ +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 ) + return i; + } + return -1; +} + + void ModuleManager::loadModules() { QTimer::singleShot( 0, this, [ this ]() { - QList< QMap< QString, QString > > customInstances = + QStringList failedModules; + Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); const auto modulesSequence = Settings::instance()->modulesSequence(); @@ -177,10 +199,9 @@ ModuleManager::loadModules() if ( moduleEntrySplit.length() < 1 || moduleEntrySplit.length() > 2 ) { - cError() << "Wrong module entry format for module" << moduleEntry << '.'; - cError() << "Calamares will now quit."; - qApp->exit( 1 ); - return; + cError() << "Wrong module entry format for module" << moduleEntry; + failedModules.append( moduleEntry ); + continue; } moduleName = moduleEntrySplit.first(); instanceId = moduleEntrySplit.last(); @@ -191,37 +212,21 @@ ModuleManager::loadModules() { cError() << "Module" << moduleName << "not found in module search paths." << Logger::DebugList( m_paths ); - cError() << "Calamares will now quit."; - qApp->exit( 1 ); - return; + failedModules.append( moduleName ); + continue; } - auto findCustomInstance = - [ customInstances ]( const QString& module, - const QString& id) -> int - { - for ( int i = 0; i < customInstances.count(); ++i ) - { - auto thisInstance = customInstances[ i ]; - if ( thisInstance.value( "module" ) == module && - thisInstance.value( "id" ) == id ) - return i; - } - return -1; - }; - if ( moduleName != instanceId ) //means this is a custom instance { - if ( findCustomInstance( moduleName, instanceId ) > -1 ) + if ( int found = findCustomInstance( customInstances, moduleName, instanceId ) > -1 ) { - configFileName = customInstances[ findCustomInstance( moduleName, instanceId ) ].value( "config" ); + configFileName = customInstances[ found ].value( "config" ); } else //ought to be a custom instance, but cannot find instance entry { cError() << "Custom instance" << moduleEntry << "not found in custom instances section."; - cError() << "Calamares will now quit."; - qApp->exit( 1 ); - return; + failedModules.append( moduleEntry ); + continue; } } @@ -241,10 +246,9 @@ ModuleManager::loadModules() m_loadedModulesByInstanceKey.value( instanceKey, nullptr ); if ( thisModule && !thisModule->isLoaded() ) { - cError() << "Module" << instanceKey << "exists but not loaded." - << "\nCalamares will now quit."; - qApp->exit( 1 ); - return; + cError() << "Module" << instanceKey << "exists but not loaded."; + failedModules.append( instanceKey ); + continue; } if ( thisModule && thisModule->isLoaded() ) @@ -260,8 +264,8 @@ ModuleManager::loadModules() m_moduleDirectoriesByModuleName.value( moduleName ) ); if ( !thisModule ) { - cWarning() << "Module" << instanceKey << "cannot be created from descriptor."; - Q_ASSERT( thisModule ); + cError() << "Module" << instanceKey << "cannot be created from descriptor" << configFileName; + failedModules.append( instanceKey ); continue; } // If it's a ViewModule, it also appends the ViewStep to the ViewManager. @@ -269,8 +273,8 @@ ModuleManager::loadModules() m_loadedModulesByInstanceKey.insert( instanceKey, thisModule ); if ( !thisModule->isLoaded() ) { - cWarning() << "Module" << moduleName << "loading FAILED"; - Q_ASSERT( thisModule->isLoaded() ); + cError() << "Module" << instanceKey << "loading FAILED."; + failedModules.append( instanceKey ); continue; } } @@ -292,7 +296,13 @@ ModuleManager::loadModules() } } } - emit modulesLoaded(); + if ( !failedModules.isEmpty() ) + { + ViewManager::instance()->onInitFailed( failedModules ); + emit modulesFailed( failedModules ); + } + else + emit modulesLoaded(); } ); } diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index ed7700c40..eff09b321 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -82,7 +83,8 @@ public: signals: void initDone(); - void modulesLoaded(); + void modulesLoaded(); /// All of the modules were loaded successfully + void modulesFailed( QStringList ); /// .. or not private slots: void doInit(); diff --git a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp index 486d9a8e2..b667b6a81 100644 --- a/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp +++ b/src/libcalamaresui/modulesystem/PythonQtViewModule.cpp @@ -1,6 +1,8 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * Copyright 2018, Raul Rodrigo Segura * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -95,6 +97,9 @@ PythonQtViewModule::loadSelf() 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 ) diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index 1f940b30b..492d58fda 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,27 +52,32 @@ ViewModule::loadSelf() PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); if ( !pf ) { - cDebug() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); + cWarning() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); return; } m_viewStep = pf->create< Calamares::ViewStep >(); if ( !m_viewStep ) { - cDebug() << Q_FUNC_INFO << "create() failed" << m_loader->errorString(); + cWarning() << Q_FUNC_INFO << "create() failed" << m_loader->errorString(); return; } -// cDebug() << "ViewModule loading self for instance" << instanceKey() -// << "\nViewModule at address" << this -// << "\nCalamares::PluginFactory at address" << pf -// << "\nViewStep at address" << m_viewStep; + } + // TODO: allow internal view steps to be created here; they would + // have to be linked into the main application somehow. + + // If any method created the view step, use it now. + if ( m_viewStep ) + { m_viewStep->setModuleInstanceKey( instanceKey() ); m_viewStep->setConfigurationMap( m_configurationMap ); ViewManager::instance()->addViewStep( m_viewStep ); m_loaded = true; cDebug() << "ViewModule" << instanceKey() << "loading complete."; } + else + cWarning() << Q_FUNC_INFO << "No view step was created"; } diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp index b05d4ea4f..425ee1811 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.cpp +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -226,10 +226,20 @@ defaultFont() } +QFont +largeFont() +{ + QFont f; + f.setPointSize( defaultFontSize() + 4 ); + return f; +} + + void setDefaultFontSize( int points ) { s_defaultFontSize = points; + s_defaultFontHeight = 0; // Recalculate on next call to defaultFontHeight() } diff --git a/src/libcalamaresui/utils/CalamaresUtilsGui.h b/src/libcalamaresui/utils/CalamaresUtilsGui.h index c0905d4d0..4b041466d 100644 --- a/src/libcalamaresui/utils/CalamaresUtilsGui.h +++ b/src/libcalamaresui/utils/CalamaresUtilsGui.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -115,6 +115,7 @@ UIDLLEXPORT void setDefaultFontSize( int points ); UIDLLEXPORT int defaultFontSize(); // in points UIDLLEXPORT int defaultFontHeight(); // in pixels, DPI-specific UIDLLEXPORT QFont defaultFont(); +UIDLLEXPORT QFont largeFont(); UIDLLEXPORT QSize defaultIconSize(); /** diff --git a/src/libcalamaresui/viewpages/BlankViewStep.cpp b/src/libcalamaresui/viewpages/BlankViewStep.cpp new file mode 100644 index 000000000..243305c1f --- /dev/null +++ b/src/libcalamaresui/viewpages/BlankViewStep.cpp @@ -0,0 +1,118 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ +#include "BlankViewStep.h" + +#include "utils/CalamaresUtilsGui.h" + +#include +#include +#include + +namespace Calamares +{ + +BlankViewStep::BlankViewStep( const QString& title, const QString& description, const QString& details, QObject* parent) + : Calamares::ViewStep( parent ) + , m_widget( new QWidget() ) +{ + QBoxLayout* layout = new QVBoxLayout(); + + constexpr int const marginWidth = 10; + constexpr int const spacingHeight = 10; + + auto* label = new QLabel( title ); + label->setAlignment( Qt::AlignHCenter ); + label->setFont( CalamaresUtils::largeFont() ); + layout->addWidget( label ); + + label = new QLabel( description ); + label->setWordWrap( true ); + label->setMargin( marginWidth ); + layout->addSpacing( spacingHeight ); + layout->addWidget( label ); + + if ( !details.isEmpty() ) + { + label = new QLabel( details ); + label->setMargin( marginWidth ); + layout->addSpacing( spacingHeight ); + layout->addWidget( label ); + } + + layout->addStretch( 1 ); // Push the rest to the top + + m_widget->setLayout( layout ); +} + +BlankViewStep::~BlankViewStep() +{ +} + +QString +BlankViewStep::prettyName() const +{ + return tr( "Blank Page" ); +} + +void +BlankViewStep::back() +{ +} + +void +BlankViewStep::next() +{ +} + +bool +BlankViewStep::isBackEnabled() const +{ + return false; +} + +bool +BlankViewStep::isNextEnabled() const +{ + return false; +} + +bool +BlankViewStep::isAtBeginning() const +{ + return true; +} + +bool +BlankViewStep::isAtEnd() const +{ + return false; +} + +QWidget* +BlankViewStep::widget() +{ + return m_widget; +} + +Calamares::JobList +BlankViewStep::jobs() const +{ + return JobList(); +} + +} // namespace diff --git a/src/libcalamaresui/viewpages/BlankViewStep.h b/src/libcalamaresui/viewpages/BlankViewStep.h new file mode 100644 index 000000000..a3f46d1d5 --- /dev/null +++ b/src/libcalamaresui/viewpages/BlankViewStep.h @@ -0,0 +1,65 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef BLANKVIEWSTEP_H +#define BLANKVIEWSTEP_H + +#include + +#include +#include + +class QWidget; + +namespace Calamares +{ + +/** @brief A "blank" view step, used for error and status reporting + * + * This view step never allows navigation (forward or back); it's a trap. + * It displays a title and explanation, and optional details. + */ +class BlankViewStep : public Calamares::ViewStep +{ + Q_OBJECT + +public: + explicit BlankViewStep( const QString& title, const QString& description, const QString& details = QString(), QObject* parent = nullptr ); + virtual ~BlankViewStep() override; + + QString prettyName() const override; + + QWidget* widget() override; + + void next() override; + void back() override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + + bool isAtBeginning() const override; + bool isAtEnd() const override; + + Calamares::JobList jobs() const override; + +private: + QWidget* m_widget; +}; + +} // namespace +#endif // BLANKVIEWSTEP_H diff --git a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp index 72e434780..4915fe120 100644 --- a/src/libcalamaresui/viewpages/PythonQtViewStep.cpp +++ b/src/libcalamaresui/viewpages/PythonQtViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index 7f93c555a..514d6b4f6 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -6,7 +6,7 @@ set( LIST_SKIPPED_MODULES "" ) if( BUILD_TESTING ) add_executable( test_conf test_conf.cpp ) - target_link_libraries( test_conf ${YAMLCPP_LIBRARY} ) + target_link_libraries( test_conf ${YAMLCPP_LIBRARY} Qt5::Core ) target_include_directories( test_conf PUBLIC ${YAMLCPP_INCLUDE_DIR} ) endif() diff --git a/src/modules/README.md b/src/modules/README.md index a2ec06144..bd6cd4e37 100644 --- a/src/modules/README.md +++ b/src/modules/README.md @@ -43,15 +43,21 @@ module's name, type, interface and possibly other properties. The name of the module as defined in `module.desc` must be the same as the name of the module's directory. -Module descriptors must have the following keys: +Module descriptors **must** have the following keys: - *name* (an identifier; must be the same as the directory name) - *type* ("job" or "view") - *interface* (see below for the different interfaces; generally we refer to the kinds of modules by their interface) +Module descriptors **may** have the following keys: +- *required* **unimplemented** (a list of modules which are required for this module + to operate properly) +- *emergency* (a boolean value, set to true to mark the module + as an emergency module) + ## Module-specific configuration -A Calamares module *may* read a module configuration file, +A Calamares module **may** read a module configuration file, named `.conf`. If such a file is present in the module's directory, it is shipped as a *default* configuration file. The module configuration file, if it exists, is a YAML 1.2 document @@ -125,3 +131,23 @@ while the module type must be "job" or "jobmodule". The key *command* should have a string as value, which is passed to the shell -- remember to quote it properly. +## Emergency Modules + +Only C++ modules and job modules may be emergency modules. If, during an +*exec* step in the sequence, a module fails, installation as a whole fails +and the install is aborted. If there are emergency modules in the **same** +exec block, those will be executed before the installation is aborted. +Non-emergency modules are not executed. + +If an emergency-module fails while processing emergency-modules for +another failed module, that failure is ignored and emergency-module +processing continues. + +Use the EMERGENCY keyword in the CMake description of a C++ module +to generate a suitable `module.desc`. + +A module that is marked as an emergency module in its module.desc +must **also** set the *emergency* key to *true* in its configuration file. +If it does not, the module is not considered to be an emergency module +after all (this is so that you can have modules that have several +instances, only some of which are actually needed for emergencies. diff --git a/src/modules/bootloader/bootloader.conf b/src/modules/bootloader/bootloader.conf index 43e8d6f79..cd021de29 100644 --- a/src/modules/bootloader/bootloader.conf +++ b/src/modules/bootloader/bootloader.conf @@ -1,6 +1,9 @@ +# Bootloader configuration. The bootloader is installed to allow +# the system to start (and pick one of the installed operating +# systems to run). --- # Define which bootloader you want to use for EFI installations -# Possible options are 'grub' and 'systemd-boot'. +# Possible options are 'grub', 'sb-shim' and 'systemd-boot'. efiBootLoader: "grub" # systemd-boot configuration files settings, set kernel and initramfs file names @@ -17,9 +20,13 @@ fallbackKernelLine: ", with _manjaro_kernel_ (fallback initramfs)" # GRUB 2 binary names and boot directory # Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names. +# These names are also used when using sb-shim, since that needs some +# GRUB functionality (notably grub-probe) to work. +# grubInstall: "grub-install" grubMkconfig: "grub-mkconfig" grubCfg: "/boot/grub/grub.cfg" +grubProbe: "/usr/sbin/grub2-probe" # Optionally set the bootloader ID to use for EFI. This is passed to # grub-install --bootloader-id. @@ -29,8 +36,8 @@ grubCfg: "/boot/grub/grub.cfg" # # The ID is also used as a directory name within the EFI environment, # and the bootloader is copied from /boot/efi/EFI// . When -# setting the option here, take care to use only valid directory -# names since no sanitizing is done. +# setting the option here, keep in mind that the name is sanitized +# (problematic characters, see above, are replaced). # # efiBootloaderId: "dirname" diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index db062da52..1abee68f7 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -167,6 +167,30 @@ def create_loader(loader_path): loader_file.write(line) +def efi_label(): + if "efiBootloaderId" in libcalamares.job.configuration: + efi_bootloader_id = libcalamares.job.configuration[ + "efiBootloaderId"] + else: + branding = libcalamares.globalstorage.value("branding") + efi_bootloader_id = branding["bootloaderEntryName"] + + file_name_sanitizer = str.maketrans(" /", "_-") + return efi_bootloader_id.translate(file_name_sanitizer) + + +def efi_word_size(): + # get bitness of the underlying UEFI + try: + sysfile = open("/sys/firmware/efi/fw_platform_size", "r") + efi_bitness = sysfile.read(2) + except Exception: + # if the kernel is older than 4.0, the UEFI bitness likely isn't + # exposed to the userspace so we assume a 64 bit UEFI here + efi_bitness = "64" + return efi_bitness + + def install_systemd_boot(efi_directory): """ Installs systemd-boot as bootloader for EFI setups. @@ -218,22 +242,8 @@ def install_grub(efi_directory, fw_type): if not os.path.isdir(install_efi_directory): os.makedirs(install_efi_directory) - if "efiBootloaderId" in libcalamares.job.configuration: - efi_bootloader_id = libcalamares.job.configuration[ - "efiBootloaderId"] - else: - branding = libcalamares.globalstorage.value("branding") - distribution = branding["bootloaderEntryName"] - file_name_sanitizer = str.maketrans(" /", "_-") - efi_bootloader_id = distribution.translate(file_name_sanitizer) - # get bitness of the underlying UEFI - try: - sysfile = open("/sys/firmware/efi/fw_platform_size", "r") - efi_bitness = sysfile.read(2) - except Exception: - # if the kernel is older than 4.0, the UEFI bitness likely isn't - # exposed to the userspace so we assume a 64 bit UEFI here - efi_bitness = "64" + efi_bootloader_id = efi_label() + efi_bitness = efi_word_size() if efi_bitness == "32": efi_target = "i386-efi" @@ -299,6 +309,57 @@ def install_grub(efi_directory, fw_type): "-o", libcalamares.job.configuration["grubCfg"]]) +def install_secureboot(efi_directory): + """ + Installs the secureboot shim in the system by calling efibootmgr. + """ + efi_bootloader_id = efi_label() + + install_path = libcalamares.globalstorage.value("rootMountPoint") + install_efi_directory = install_path + efi_directory + + if efi_word_size() == "64": + install_efi_bin = "shim64.efi" + else: + install_efi_bin = "shim.efi" + + # Copied, roughly, from openSUSE's install script, + # and pythonified. *disk* is something like /dev/sda, + # while *drive* may return "(disk/dev/sda,gpt1)" .. + # we're interested in the numbers in the second part + # of that tuple. + efi_drive = subprocess.check_output([ + libcalamares.job.configuration["grubProbe"], + "-t", "drive", "--device-map=", install_efi_directory]) + efi_disk = subprocess.check_output([ + libcalamares.job.configuration["grubProbe"], + "-t", "disk", "--device-map=", install_efi_directory]) + + efi_drive_partition = efi_drive.replace("(","").replace(")","").split(",")[1] + # Get the first run of digits from the partition + efi_partititon_number = None + c = 0 + start = None + while c < len(efi_drive_partition): + if efi_drive_partition[c].isdigit() and start is None: + start = c + if not efi_drive_partition[c].isdigit() and start is not None: + efi_drive_number = efi_drive_partition[start:c] + break + c += 1 + if efi_partititon_number is None: + raise ValueError("No partition number found for %s" % install_efi_directory) + + subprocess.call([ + "/usr/sbin/efibootmgr", + "-c", + "-w", + "-L", efi_bootloader_id, + "-d", efi_disk, + "-p", efi_partititon_number, + "-l", install_efi_directory + "/" + install_efi_bin]) + + def vfat_correct_case(parent, name): for candidate in os.listdir(parent): if name.lower() == candidate.lower(): @@ -320,8 +381,14 @@ def prepare_bootloader(fw_type): if efi_boot_loader == "systemd-boot" and fw_type == "efi": install_systemd_boot(efi_directory) - else: + elif efi_boot_loader == "sb-shim" and fw_type == "efi": + install_secureboot(efi_directory) + elif efi_boot_loader == "grub" or fw_type != "efi": install_grub(efi_directory, fw_type) + else: + libcalamares.utils.debug( "WARNING: the combination of " + "boot-loader '{!s}' and firmware '{!s}' " + "is not supported.".format(efi_boot_loader, fw_type) ) def run(): diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index 380a92d0a..d79297029 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -66,7 +66,7 @@ struct ContextualProcessBinding void append( const QString& value, CalamaresUtils::CommandList* commands ) { checks.append( ValueCheck( value, commands ) ); - if ( value == '*' ) + if ( value == QString( "*" ) ) wildcard = commands; } diff --git a/src/modules/contextualprocess/Tests.cpp b/src/modules/contextualprocess/Tests.cpp index ed6d4f278..89fb1922c 100644 --- a/src/modules/contextualprocess/Tests.cpp +++ b/src/modules/contextualprocess/Tests.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/contextualprocess/contextualprocess.conf b/src/modules/contextualprocess/contextualprocess.conf index 1f148328c..74bd2304a 100644 --- a/src/modules/contextualprocess/contextualprocess.conf +++ b/src/modules/contextualprocess/contextualprocess.conf @@ -17,7 +17,10 @@ # # As a special case, the value-check "*" matches any value, but **only** # if no other value-check matches. Use it as an *else* form for value- -# checks. Take care to put the asterisk in quotes. +# checks. Take care to put the asterisk in quotes. The value-check "*" +# **also** matches a literal asterisk as value; a confusing corner case +# is checking for an asterisk **and** having a wildcard match with +# different commands. This is currently not possible. # # Global configuration variables are not checked in a deterministic # order, so do not rely on commands from one variable-check to diff --git a/src/modules/dummycpp/DummyCppJob.cpp b/src/modules/dummycpp/DummyCppJob.cpp index fb5a2db3a..b404eaf63 100644 --- a/src/modules/dummycpp/DummyCppJob.cpp +++ b/src/modules/dummycpp/DummyCppJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Teo Mrnjavac (original dummypython code) * Copyright 2016, Kevin Kofler + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo index 73c58bb4a..bb3f4ea3f 100644 Binary files a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po index 22412c347..8ccd80311 100644 --- a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.po @@ -8,8 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: guillermo pacheco , 2018\n" "Language-Team: Spanish (Mexico) (https://www.transifex.com/calamares/teams/20061/es_MX/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,24 +20,24 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "¡Haz clic en mí!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Una nueva QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" -msgstr "" +msgstr "Vision del PythonQt ficticio" #: src/modules/dummypythonqt/main.py:183 msgid "The Dummy PythonQt Job" -msgstr "" +msgstr "Trabajo del PythonQt ficticio" #: src/modules/dummypythonqt/main.py:186 msgid "This is the Dummy PythonQt Job. The dummy job says: {}" -msgstr "" +msgstr "Este es el Trabajo PythonQt ficticio. El trabajo ficticio dice: {}" #: src/modules/dummypythonqt/main.py:190 msgid "A status message for Dummy PythonQt Job." -msgstr "" +msgstr "Un mensaje de estado para el trabajo PythonQt ficticio." diff --git a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo new file mode 100644 index 000000000..9dfa007bd Binary files /dev/null and b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po new file mode 100644 index 000000000..94b78e28a --- /dev/null +++ b/src/modules/dummypythonqt/lang/ko/LC_MESSAGES/dummypythonqt.po @@ -0,0 +1,42 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-28 04:57-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language-Team: Korean (https://www.transifex.com/calamares/teams/20061/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/modules/dummypythonqt/main.py:84 +msgid "Click me!" +msgstr "" + +#: src/modules/dummypythonqt/main.py:94 +msgid "A new QLabel." +msgstr "" + +#: src/modules/dummypythonqt/main.py:97 +msgid "Dummy PythonQt ViewStep" +msgstr "" + +#: src/modules/dummypythonqt/main.py:183 +msgid "The Dummy PythonQt Job" +msgstr "" + +#: src/modules/dummypythonqt/main.py:186 +msgid "This is the Dummy PythonQt Job. The dummy job says: {}" +msgstr "" + +#: src/modules/dummypythonqt/main.py:190 +msgid "A status message for Dummy PythonQt Job." +msgstr "" diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index ca03ccb89..ef3b0745e 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py index 197a22edf..b19ebf588 100644 --- a/src/modules/grubcfg/main.py +++ b/src/modules/grubcfg/main.py @@ -7,7 +7,7 @@ # Copyright 2015-2017, Teo Mrnjavac # Copyright 2017, Alf Gaida # Copyright 2017, Adriaan de Groot -# Copyright 2017, Gabriel Craciunescu +# Copyright 2017-2018, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -44,16 +44,21 @@ def modify_grub_default(partitions, root_mount_point, distributor): dracut_bin = libcalamares.utils.target_env_call( ["sh", "-c", "which dracut"] ) - have_dracut = dracut_bin == 0 # Shell exit value 0 means success + plymouth_bin = libcalamares.utils.target_env_call( + ["sh", "-c", "which plymouth"] + ) + + # Shell exit value 0 means success + have_plymouth = plymouth_bin == 0 + have_dracut = dracut_bin == 0 use_splash = "" swap_uuid = "" swap_outer_uuid = "" swap_outer_mappername = None - if libcalamares.globalstorage.contains("hasPlymouth"): - if libcalamares.globalstorage.value("hasPlymouth"): - use_splash = "splash" + if have_plymouth: + use_splash = "splash" cryptdevice_params = [] diff --git a/src/modules/hwclock/main.py b/src/modules/hwclock/main.py index e2f70ee61..9cac929ba 100644 --- a/src/modules/hwclock/main.py +++ b/src/modules/hwclock/main.py @@ -6,7 +6,7 @@ # Copyright 2014 - 2015, Philip Müller # Copyright 2014, Teo Mrnjavac # Copyright 2017, Alf Gaida -# Copyright 2017, Gabriel Craciunescu +# Copyright 2017-2018, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index 9e4b7e3ae..6f4473014 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer @@ -95,8 +95,7 @@ KeyboardPage::KeyboardPage( QWidget* parent ) QString model = m_models.value( text, "pc105" ); // Set Xorg keyboard model - QProcess::execute( QLatin1Literal( "setxkbmap" ), - QStringList() << "-model" << model ); + QProcess::execute( "setxkbmap", QStringList{ "-model", model } ); } ); CALAMARES_RETRANSLATE( ui->retranslateUi( this ); ) @@ -356,11 +355,15 @@ KeyboardPage::onActivate() lang.replace( '-', '_' ); // Normalize separators } - if ( !lang.isEmpty() && specialCaseMap.contains( lang.toStdString() ) ) + if ( !lang.isEmpty() ) { - QLatin1String newLang( specialCaseMap.value( lang.toStdString() ).c_str() ); - cDebug() << " .. special case language" << lang << '>' << newLang; - lang = newLang; + std::string lang_s = lang.toStdString(); + if ( specialCaseMap.contains( lang_s ) ) + { + QString newLang = QString::fromStdString( specialCaseMap.value( lang_s ) ); + cDebug() << " .. special case language" << lang << "becomes" << newLang; + lang = newLang; + } } if ( !lang.isEmpty() ) { @@ -478,9 +481,8 @@ KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWi connect( &m_setxkbmapTimer, &QTimer::timeout, this, [=] { - QProcess::execute( QLatin1Literal( "setxkbmap" ), - xkbmap_args( QStringList(), layout, variant ) ); - cDebug() << "xkbmap selection changed to: " << layout << "-" << variant; + QProcess::execute( "setxkbmap", xkbmap_args( QStringList(), layout, variant ) ); + cDebug() << "xkbmap selection changed to: " << layout << '-' << variant; m_setxkbmapTimer.disconnect( this ); } ); m_setxkbmapTimer.start( QApplication::keyboardInputInterval() ); diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp index 9cdf831e6..26aa18d87 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index 12d259e98..351c55d79 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -3,6 +3,7 @@ * Copyright 2015, Anke Boersma * Copyright 2015, Alexandre Arnt * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,7 +58,7 @@ LicensePage::LicensePage(QWidget *parent) CalamaresUtils::defaultFontHeight() * 3, CalamaresUtils::defaultFontHeight(), CalamaresUtils::defaultFontHeight() ); - + ui->acceptFrame->setFrameStyle( QFrame::NoFrame | QFrame::Plain ); ui->acceptFrame->setStyleSheet( "#acceptFrame { border: 1px solid red;" "background-color: #fff6f6;" diff --git a/src/modules/license/LicensePage.h b/src/modules/license/LicensePage.h index 4f84b55be..300e9e309 100644 --- a/src/modules/license/LicensePage.h +++ b/src/modules/license/LicensePage.h @@ -3,6 +3,7 @@ * Copyright 2015, Anke Boersma * Copyright 2015, Alexandre Arnt * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/GeoIPJSON.cpp b/src/modules/locale/GeoIPJSON.cpp index ee99e6c11..b4daf2084 100644 --- a/src/modules/locale/GeoIPJSON.cpp +++ b/src/modules/locale/GeoIPJSON.cpp @@ -28,7 +28,7 @@ #include GeoIPJSON::GeoIPJSON(const QString& attribute) - : GeoIP( attribute.isEmpty() ? QLatin1String( "time_zone" ) : attribute ) + : GeoIP( attribute.isEmpty() ? QStringLiteral( "time_zone" ) : attribute ) { } diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp index 42779ede0..af114611e 100644 --- a/src/modules/locale/GeoIPTests.cpp +++ b/src/modules/locale/GeoIPTests.cpp @@ -23,6 +23,10 @@ #include "GeoIPXML.h" #endif +#include +#include +#include + #include QTEST_GUILESS_MAIN( GeoIPTests ) @@ -49,15 +53,15 @@ GeoIPTests::testJSON() GeoIPJSON handler; auto tz = handler.processReply( json_data_attribute ); - QCOMPARE( tz.first, QLatin1String( "Europe" ) ); - QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); + QCOMPARE( tz.first, QStringLiteral( "Europe" ) ); + QCOMPARE( tz.second, QStringLiteral( "Amsterdam" ) ); // JSON is quite tolerant tz = handler.processReply( "time_zone: \"Europe/Brussels\"" ); - QCOMPARE( tz.second, QLatin1String( "Brussels" ) ); + QCOMPARE( tz.second, QStringLiteral( "Brussels" ) ); tz = handler.processReply( "time_zone: America/New_York\n" ); - QCOMPARE( tz.first, QLatin1String( "America" ) ); + QCOMPARE( tz.first, QStringLiteral( "America" ) ); } void GeoIPTests::testJSONalt() @@ -68,8 +72,8 @@ void GeoIPTests::testJSONalt() QCOMPARE( tz.first, QString() ); // Not found tz = handler.processReply( "tarifa: 12\nzona_de_hora: Europe/Madrid" ); - QCOMPARE( tz.first, QLatin1String( "Europe" ) ); - QCOMPARE( tz.second, QLatin1String( "Madrid" ) ); + QCOMPARE( tz.first, QStringLiteral( "Europe" ) ); + QCOMPARE( tz.second, QStringLiteral( "Madrid" ) ); } void @@ -118,8 +122,8 @@ GeoIPTests::testXML() GeoIPXML handler; auto tz = handler.processReply( xml_data_ubiquity ); - QCOMPARE( tz.first, QLatin1String( "Europe" ) ); - QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); + QCOMPARE( tz.first, QStringLiteral( "Europe" ) ); + QCOMPARE( tz.second, QStringLiteral( "Amsterdam" ) ); #endif } @@ -133,8 +137,8 @@ GeoIPTests::testXML2() GeoIPXML handler; auto tz = handler.processReply( data ); - QCOMPARE( tz.first, QLatin1String( "America" ) ); - QCOMPARE( tz.second, QLatin1String( "North_Dakota/Beulah" ) ); // Without space + QCOMPARE( tz.first, QStringLiteral( "America" ) ); + QCOMPARE( tz.second, QStringLiteral( "North_Dakota/Beulah" ) ); // Without space #endif } @@ -145,8 +149,8 @@ void GeoIPTests::testXMLalt() GeoIPXML handler( "ZT" ); auto tz = handler.processReply( "Moon/Dark_side" ); - QCOMPARE( tz.first, QLatin1String( "Moon" ) ); - QCOMPARE( tz.second, QLatin1String( "Dark_side" ) ); + QCOMPARE( tz.first, QStringLiteral( "Moon" ) ); + QCOMPARE( tz.second, QStringLiteral( "Dark_side" ) ); #endif } @@ -168,26 +172,26 @@ GeoIPTests::testXMLbad() void GeoIPTests::testSplitTZ() { - auto tz = GeoIP::splitTZString( QLatin1String("Moon/Dark_side") ); - QCOMPARE( tz.first, QLatin1String("Moon") ); - QCOMPARE( tz.second, QLatin1String("Dark_side") ); + auto tz = GeoIP::splitTZString( QStringLiteral("Moon/Dark_side") ); + QCOMPARE( tz.first, QStringLiteral("Moon") ); + QCOMPARE( tz.second, QStringLiteral("Dark_side") ); // Some providers return weirdly escaped data - tz = GeoIP::splitTZString( QLatin1String("America\\/NewYork") ); - QCOMPARE( tz.first, QLatin1String("America") ); - QCOMPARE( tz.second, QLatin1String("NewYork") ); // That's not actually the zone name + tz = GeoIP::splitTZString( QStringLiteral("America\\/NewYork") ); + QCOMPARE( tz.first, QStringLiteral("America") ); + QCOMPARE( tz.second, QStringLiteral("NewYork") ); // That's not actually the zone name // Check that bogus data fails tz = GeoIP::splitTZString( QString() ); QCOMPARE( tz.first, QString() ); - tz = GeoIP::splitTZString( QLatin1String("America.NewYork") ); + tz = GeoIP::splitTZString( QStringLiteral("America.NewYork") ); QCOMPARE( tz.first, QString() ); // Check that three-level is split properly and space is replaced - tz = GeoIP::splitTZString( QLatin1String("America/North Dakota/Beulah") ); - QCOMPARE( tz.first, QLatin1String("America") ); - QCOMPARE( tz.second, QLatin1String("North_Dakota/Beulah") ); + tz = GeoIP::splitTZString( QStringLiteral("America/North Dakota/Beulah") ); + QCOMPARE( tz.first, QStringLiteral("America") ); + QCOMPARE( tz.second, QStringLiteral("North_Dakota/Beulah") ); } @@ -217,7 +221,7 @@ synchronous_get( const char* urlstring ) void GeoIPTests::testGet() { - if ( !QProcessEnvironment::systemEnvironment().contains( QLatin1String("TEST_HTTP_GET") ) ) + if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral("TEST_HTTP_GET") ) ) { qDebug() << "Skipping HTTP GET tests"; return; @@ -228,8 +232,8 @@ void GeoIPTests::testGet() auto default_tz = default_handler.processReply( synchronous_get( "https://geoip.kde.org/v1/calamares" ) ); // This is bogus, because the test isn't always run by me - // QCOMPARE( default_tz.first, QLatin1String("Europe") ); - // QCOMPARE( default_tz.second, QLatin1String("Amsterdam") ); + // QCOMPARE( default_tz.first, QStringLiteral("Europe") ); + // QCOMPARE( default_tz.second, QStringLiteral("Amsterdam") ); QVERIFY( !default_tz.first.isEmpty() ); QVERIFY( !default_tz.second.isEmpty() ); @@ -238,12 +242,12 @@ void GeoIPTests::testGet() // services don't agree on the location of where the test is run. CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent CHECK_GET( JSON, QString(), "http://freegeoip.net/json/" ) // Original FreeGeoIP service - CHECK_GET( JSON, QLatin1String("timezone"), "https://ipapi.co/json" ) // Different JSON - CHECK_GET( JSON, QLatin1String("timezone"), "http://ip-api.com/json" ) + CHECK_GET( JSON, QStringLiteral("timezone"), "https://ipapi.co/json" ) // Different JSON + CHECK_GET( JSON, QStringLiteral("timezone"), "http://ip-api.com/json" ) - CHECK_GET( JSON, QLatin1String("location.time_zone"), "http://geoip.nekudo.com/api/" ) // 2-level JSON + CHECK_GET( JSON, QStringLiteral("location.time_zone"), "http://geoip.nekudo.com/api/" ) // 2-level JSON - CHECK_GET( JSON, QLatin1String("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON + CHECK_GET( JSON, QStringLiteral("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON #ifdef HAVE_XML CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format diff --git a/src/modules/locale/GeoIPXML.cpp b/src/modules/locale/GeoIPXML.cpp index 0fb5359f3..bd675c2ef 100644 --- a/src/modules/locale/GeoIPXML.cpp +++ b/src/modules/locale/GeoIPXML.cpp @@ -24,7 +24,7 @@ #include GeoIPXML::GeoIPXML( const QString& element ) - : GeoIP( element.isEmpty() ? QLatin1String( "TimeZone" ) : element ) + : GeoIP( element.isEmpty() ? QStringLiteral( "TimeZone" ) : element ) { } diff --git a/src/modules/locale/LocaleConfiguration.cpp b/src/modules/locale/LocaleConfiguration.cpp index f4cbc800d..7c8ad3305 100644 --- a/src/modules/locale/LocaleConfiguration.cpp +++ b/src/modules/locale/LocaleConfiguration.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocaleConfiguration.h b/src/modules/locale/LocaleConfiguration.h index 4f6cde556..c077ef6f7 100644 --- a/src/modules/locale/LocaleConfiguration.h +++ b/src/modules/locale/LocaleConfiguration.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index e4f36daad..9aad283c6 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -498,7 +498,7 @@ LocalePage::updateGlobalStorage() #ifndef DEBUG_TIMEZONES if ( Calamares::Settings::instance()->doChroot() ) { - QProcess ::execute( "timedatectl", // depends on systemd + QProcess::execute( "timedatectl", // depends on systemd { "set-timezone", location.region + '/' + location.zone } ); } diff --git a/src/modules/locale/LocaleViewStep.h b/src/modules/locale/LocaleViewStep.h index b02f6adbd..8006bc616 100644 --- a/src/modules/locale/LocaleViewStep.h +++ b/src/modules/locale/LocaleViewStep.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/locale/test_geoip.cpp b/src/modules/locale/test_geoip.cpp index 7b6584f0c..5ba43f72e 100644 --- a/src/modules/locale/test_geoip.cpp +++ b/src/modules/locale/test_geoip.cpp @@ -38,10 +38,10 @@ int main(int argc, char** argv) } GeoIP* handler = nullptr; - if ( QLatin1String( "json" ) == argv[1] ) + if ( QStringLiteral( "json" ) == argv[1] ) handler = new GeoIPJSON; #ifdef HAVE_XML - else if ( QLatin1String( "xml" ) == argv[1] ) + else if ( QStringLiteral( "xml" ) == argv[1] ) handler = new GeoIPXML; #endif diff --git a/src/modules/locale/timezonewidget/timezonewidget.cpp b/src/modules/locale/timezonewidget/timezonewidget.cpp index 6609160d5..7b5a2f0d3 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.cpp +++ b/src/modules/locale/timezonewidget/timezonewidget.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Originally from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/locale/timezonewidget/timezonewidget.h b/src/modules/locale/timezonewidget/timezonewidget.h index 8589dc74d..dd49b3311 100644 --- a/src/modules/locale/timezonewidget/timezonewidget.h +++ b/src/modules/locale/timezonewidget/timezonewidget.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Originally from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index e6c37133b..d44d7da2b 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -6,6 +6,7 @@ # Copyright 2014, Anke Boersma # Copyright 2015, Philip Müller # Copyright 2016, Teo Mrnjavac +# Copyright 2018, AlmAck # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index 5272d83fd..39282ef00 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -2,7 +2,7 @@ * Copyright 2016, Luca Giambonini * Copyright 2016, Lisa Vitolo * Copyright 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * Copyright 2017, Gabriel Craciunescu * * Calamares is free software: you can redistribute it and/or modify diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index 3dc8ee46e..7ec37e7ac 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -2,7 +2,7 @@ * Copyright 2016, Luca Giambonini * Copyright 2016, Lisa Vitolo * Copyright 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/NetInstallViewStep.cpp b/src/modules/netinstall/NetInstallViewStep.cpp index de4480cbb..6dd824b32 100644 --- a/src/modules/netinstall/NetInstallViewStep.cpp +++ b/src/modules/netinstall/NetInstallViewStep.cpp @@ -2,7 +2,7 @@ * Copyright 2016, Luca Giambonini * Copyright 2016, Lisa Vitolo * Copyright 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/netinstall/PackageModel.cpp b/src/modules/netinstall/PackageModel.cpp index 3e721c017..f64bd778f 100644 --- a/src/modules/netinstall/PackageModel.cpp +++ b/src/modules/netinstall/PackageModel.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright (c) 2017, Kyle Robbertze - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/KPMHelpers.cpp b/src/modules/partition/core/KPMHelpers.cpp index 3f3134c5b..f8be44345 100644 --- a/src/modules/partition/core/KPMHelpers.cpp +++ b/src/modules/partition/core/KPMHelpers.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index a39cb5395..12aa489db 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -344,23 +344,29 @@ isEfiSystem() bool isEfiBootable( const Partition* candidate ) { + cDebug() << "Check EFI bootable" << candidate->partitionPath() << candidate->devicePath(); + cDebug() << " .. flags" << candidate->activeFlags(); + auto flags = PartitionInfo::flags( candidate ); /* If bit 17 is set, old-style Esp flag, it's OK */ if ( flags.testFlag( PartitionTable::FlagEsp ) ) return true; - /* Otherwise, if it's a GPT table, Boot (bit 0) is the same as Esp */ const PartitionNode* root = candidate; while ( root && !root->isRoot() ) + { root = root->parent(); + cDebug() << " .. moved towards root" << (void *)root; + } // Strange case: no root found, no partition table node? if ( !root ) return false; const PartitionTable* table = dynamic_cast( root ); + cDebug() << " .. partition table" << (void *)table << "type" << ( table ? table->type() : PartitionTable::TableType::unknownTableType ); return table && ( table->type() == PartitionTable::TableType::gpt ) && flags.testFlag( PartitionTable::FlagBoot ); } diff --git a/src/modules/partition/core/PartUtils.h b/src/modules/partition/core/PartUtils.h index c81258712..b94e20567 100644 --- a/src/modules/partition/core/PartUtils.h +++ b/src/modules/partition/core/PartUtils.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp index e1822d434..d654edf12 100644 --- a/src/modules/partition/core/PartitionActions.cpp +++ b/src/modules/partition/core/PartitionActions.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index c810f6abc..3cc88d527 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -2,7 +2,8 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot + * Copyright 2018, Caio Carvalho * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionInfo.cpp b/src/modules/partition/core/PartitionInfo.cpp index dcd49d2e9..9cc03fc9d 100644 --- a/src/modules/partition/core/PartitionInfo.cpp +++ b/src/modules/partition/core/PartitionInfo.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionInfo.h b/src/modules/partition/core/PartitionInfo.h index 9003bf997..a9c391059 100644 --- a/src/modules/partition/core/PartitionInfo.h +++ b/src/modules/partition/core/PartitionInfo.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/core/PartitionModel.cpp b/src/modules/partition/core/PartitionModel.cpp index 0265da29d..8f0ecba81 100644 --- a/src/modules/partition/core/PartitionModel.cpp +++ b/src/modules/partition/core/PartitionModel.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index fdc68ef97..bef6e4966 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 91274d152..c36747e93 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/CreatePartitionDialog.cpp b/src/modules/partition/gui/CreatePartitionDialog.cpp index 439583be9..0e7602c08 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.cpp +++ b/src/modules/partition/gui/CreatePartitionDialog.cpp @@ -2,6 +2,9 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * Copyright 2018, Andrius Štikonas + * Copyright 2018, Caio Carvalho * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/CreatePartitionDialog.h b/src/modules/partition/gui/CreatePartitionDialog.h index 769edb5de..2f3cc14a5 100644 --- a/src/modules/partition/gui/CreatePartitionDialog.h +++ b/src/modules/partition/gui/CreatePartitionDialog.h @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.cpp b/src/modules/partition/gui/EditExistingPartitionDialog.cpp index c0fff50a8..3ad5080b4 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.cpp +++ b/src/modules/partition/gui/EditExistingPartitionDialog.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Flags handling originally from KDE Partition Manager, * Copyright 2008-2009, Volker Lanz diff --git a/src/modules/partition/gui/EditExistingPartitionDialog.h b/src/modules/partition/gui/EditExistingPartitionDialog.h index 106ba6639..e98563bc0 100644 --- a/src/modules/partition/gui/EditExistingPartitionDialog.h +++ b/src/modules/partition/gui/EditExistingPartitionDialog.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionPage.cpp b/src/modules/partition/gui/PartitionPage.cpp index 426667a08..09badbf94 100644 --- a/src/modules/partition/gui/PartitionPage.cpp +++ b/src/modules/partition/gui/PartitionPage.cpp @@ -2,6 +2,8 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2015-2016, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot + * Copyright 2018, Andrius Štikonas * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionPage.h b/src/modules/partition/gui/PartitionPage.h index d7c823a61..2ab7f5839 100644 --- a/src/modules/partition/gui/PartitionPage.h +++ b/src/modules/partition/gui/PartitionPage.h @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 45676e440..b49b6c93b 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Aurélien Gâteau * Copyright 2014-2017, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/gui/ReplaceWidget.h b/src/modules/partition/gui/ReplaceWidget.h index 15015f120..c09c604b1 100644 --- a/src/modules/partition/gui/ReplaceWidget.h +++ b/src/modules/partition/gui/ReplaceWidget.h @@ -2,6 +2,7 @@ * * Copyright 2014-2015, Teo Mrnjavac * Copyright 2014, Aurélien Gâteau + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/partition/jobs/ClearMountsJob.cpp b/src/modules/partition/jobs/ClearMountsJob.cpp index 1a48becad..da6bee325 100644 --- a/src/modules/partition/jobs/ClearMountsJob.cpp +++ b/src/modules/partition/jobs/ClearMountsJob.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfPage.cpp b/src/modules/plasmalnf/PlasmaLnfPage.cpp index d34042e4f..df55cb3a4 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.cpp +++ b/src/modules/plasmalnf/PlasmaLnfPage.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfPage.h b/src/modules/plasmalnf/PlasmaLnfPage.h index b90e4cfb4..5a4c68b4e 100644 --- a/src/modules/plasmalnf/PlasmaLnfPage.h +++ b/src/modules/plasmalnf/PlasmaLnfPage.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp index c5b9d5a83..ef319bde4 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.cpp +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plasmalnf/PlasmaLnfViewStep.h b/src/modules/plasmalnf/PlasmaLnfViewStep.h index 192d7085e..b9a6b72e6 100644 --- a/src/modules/plasmalnf/PlasmaLnfViewStep.h +++ b/src/modules/plasmalnf/PlasmaLnfViewStep.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/plymouthcfg/main.py b/src/modules/plymouthcfg/main.py index 2cb4f6dac..6f1128b7e 100644 --- a/src/modules/plymouthcfg/main.py +++ b/src/modules/plymouthcfg/main.py @@ -5,6 +5,7 @@ # # Copyright 2016, Artoo # Copyright 2017, Alf Gaida +# Copyright 2018, Gabriel Craciunescu # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -40,14 +41,9 @@ class PlymouthController: "/etc/plymouth/plymouthd.conf"]) def detect(self): - isPlymouth = target_env_call(["which", "plymouth"]) + isPlymouth = target_env_call(["sh", "-c", "which plymouth"]) debug("which plymouth exit code: {!s}".format(isPlymouth)) - if isPlymouth == 0: - libcalamares.globalstorage.insert("hasPlymouth", True) - else: - libcalamares.globalstorage.insert("hasPlymouth", False) - return isPlymouth def run(self): diff --git a/src/modules/preservefiles/CMakeLists.txt b/src/modules/preservefiles/CMakeLists.txt index 43602024c..1ac979d1b 100644 --- a/src/modules/preservefiles/CMakeLists.txt +++ b/src/modules/preservefiles/CMakeLists.txt @@ -8,4 +8,5 @@ calamares_add_plugin( preservefiles LINK_PRIVATE_LIBRARIES calamares SHARED_LIB + EMERGENCY ) diff --git a/src/modules/preservefiles/module.desc b/src/modules/preservefiles/module.desc deleted file mode 100644 index 953d8c81b..000000000 --- a/src/modules/preservefiles/module.desc +++ /dev/null @@ -1,5 +0,0 @@ ---- -type: "job" -name: "preservefiles" -interface: "qtplugin" -load: "libcalamares_job_preservefiles.so" diff --git a/src/modules/shellprocess/Tests.cpp b/src/modules/shellprocess/Tests.cpp index 7ebb8e624..068aefda5 100644 --- a/src/modules/shellprocess/Tests.cpp +++ b/src/modules/shellprocess/Tests.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/test_conf.cpp b/src/modules/test_conf.cpp index 7ef557a3c..b5362d25a 100644 --- a/src/modules/test_conf.cpp +++ b/src/modules/test_conf.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,43 +21,86 @@ * shipped with each module for correctness -- well, for parseability. */ +#include +#include + #include + #include +#include +#include + using std::cerr; +static const char usage[] = "Usage: test_conf [-v] [-b] ...\n"; + int main(int argc, char** argv) { - if (argc != 2) + bool verbose = false; + bool bytes = false; + + int opt; + while ((opt = getopt(argc, argv, "vb")) != -1) { + switch (opt) { + case 'v': + verbose = true; + break; + case 'b': + bytes = true; + break; + default: /* '?' */ + cerr << usage; + return 1; + } + } + + if ( optind >= argc ) { - cerr << "Usage: test_conf \n"; + cerr << usage; return 1; } + const char* filename = argv[optind]; try { - YAML::Node doc = YAML::LoadFile( argv[1] ); + YAML::Node doc; + if ( bytes ) + { + QFile f( filename ); + if ( f.open( QFile::ReadOnly | QFile::Text ) ) + doc = YAML::Load( f.readAll().constData() ); + } + else + doc = YAML::LoadFile( filename ); if ( doc.IsNull() ) { // Special case: empty config files are valid, // but aren't a map. For the example configs, // this is still an error. - cerr << "WARNING:" << argv[1] << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: empty YAML\n"; return 1; } if ( !doc.IsMap() ) { - cerr << "WARNING:" << argv[1] << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: not-a-YAML-map\n"; return 1; } + + if ( verbose ) + { + cerr << "Keys:\n"; + for ( auto i = doc.begin(); i != doc.end(); ++i ) + cerr << i->first.as() << '\n'; + } } catch ( YAML::Exception& e ) { - cerr << "WARNING:" << argv[1] << '\n'; + cerr << "WARNING:" << filename << '\n'; cerr << "WARNING: YAML parser error " << e.what() << '\n'; return 1; } diff --git a/src/modules/tracking/TrackingJobs.cpp b/src/modules/tracking/TrackingJobs.cpp index 717d636d3..7875ee6db 100644 --- a/src/modules/tracking/TrackingJobs.cpp +++ b/src/modules/tracking/TrackingJobs.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingJobs.h b/src/modules/tracking/TrackingJobs.h index 4ad3652ca..a379441c9 100644 --- a/src/modules/tracking/TrackingJobs.h +++ b/src/modules/tracking/TrackingJobs.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 26858442f..924ac43d9 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index c024f1d3a..dc3ae823e 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -1,6 +1,6 @@ /* === This file is part of Calamares - === * - * Copyright 2017, Adriaan de Groot + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/SetHostNameJob.cpp b/src/modules/users/SetHostNameJob.cpp index 87c89c3b8..62b1c61a7 100644 --- a/src/modules/users/SetHostNameJob.cpp +++ b/src/modules/users/SetHostNameJob.cpp @@ -2,6 +2,7 @@ * * Copyright 2014, Rohan Garg * Copyright 2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index 86e010469..04b851cf9 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2017, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/users/UsersPage.h b/src/modules/users/UsersPage.h index 817f73d0b..a238461ec 100644 --- a/src/modules/users/UsersPage.h +++ b/src/modules/users/UsersPage.h @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * * Portions from the Manjaro Installation Framework * by Roland Singer diff --git a/src/modules/users/UsersViewStep.cpp b/src/modules/users/UsersViewStep.cpp index 37d86819e..8ff7b0e7b 100644 --- a/src/modules/users/UsersViewStep.cpp +++ b/src/modules/users/UsersViewStep.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac - * Copyright 2017, Adriaan de Groot + * Copyright 2017-2018, Adriaan de Groot * Copyright 2017, Gabriel Craciunescu * * Calamares is free software: you can redistribute it and/or modify diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index 8534b808c..86740fb3d 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2015, Teo Mrnjavac + * Copyright 2018, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by