Merge pull request #828 from stikonas/lvm2

Add support for performing operations on LVM logical volumes.
This commit is contained in:
Adriaan de Groot 2017-12-15 07:13:24 -05:00 committed by GitHub
commit 12deb67ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
114 changed files with 1408 additions and 1586 deletions

3
.gitignore vendored
View File

@ -46,3 +46,6 @@ CMakeLists.txt.user
# Backup files
*~
# Kate
*.kate-swp

View File

@ -1,6 +1,4 @@
language:
- cpp
- python
language: cpp
python:
- 3.5
@ -18,5 +16,5 @@ install:
- docker build -t calamares .
script:
- docker run -v $PWD:/src --tmpfs /build:rw,size=65536k calamares bash -lc "cd /build && cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON /src && make -j2 && make install DESTDIR=/build/INSTALL_ROOT"
- docker run -v $PWD:/src --tmpfs /build:rw,size=65536k -e SRCDIR=/src -e BUILDDIR=/build calamares "/src/ci/travis.sh"

26
AUTHORS
View File

@ -1,2 +1,24 @@
Teo Mrnjavac <teo@kde.org>
Adriaan de Groot <groot@kde.org>
# MAINTAINER
Teo Mrnjavac <teo@kde.org> (maintainer -2017)
Adriaan de Groot <groot@kde.org> (maintainer 2017-)
# CONTRIBUTORS
Alf Gaida
Allen Welkie
Andrius Štikonas
Bernhard Landauer
Bezzy1999
bill-auger
crispg72
demmm
Gabriel Craciunescu
Kai Dohmen
Kevin Kofler
Kyle Robertze
Lisa Vitolo
n3rdopolis
Philip Müller
Ramon Buldó
Rohan Garg

View File

@ -50,7 +50,7 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
# Clang warnings: doing *everything* is counter-productive, since it warns
# about things which we can't fix (e.g. C++98 incompatibilities, but
# Calaares is C++14).
# Calamares is C++14).
foreach( CLANG_WARNINGS
-Weverything
-Wno-c++98-compat
@ -88,6 +88,8 @@ else()
set( SUPPRESS_BOOST_WARNINGS "" )
endif()
# Use mark_thirdparty_code() to reduce warnings from the compiler
# on code that we're not going to fix. Call this with a list of files.
macro(mark_thirdparty_code)
set_source_files_properties( ${ARGV}
PROPERTIES
@ -164,8 +166,8 @@ set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX
### Bump version here
set( CALAMARES_VERSION_MAJOR 3 )
set( CALAMARES_VERSION_MINOR 1 )
set( CALAMARES_VERSION_PATCH 5 )
set( CALAMARES_VERSION_RC 0 )
set( CALAMARES_VERSION_PATCH 8 )
set( CALAMARES_VERSION_RC 1 )
set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} )
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
@ -265,12 +267,9 @@ else()
endif()
# Doesn't list mksquashfs as an optional dep, though, because it
# hasn't been sent through the find_package() scheme.
set_package_properties( mksquashfs PROPERTIES
DESCRIPTION "Create squashed filesystems"
URL "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html"
PURPOSE "Create example distro"
TYPE OPTIONAL
)
#
# "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html"
add_feature_info( ExampleDistro ${mksquashfs_FOUND} "Create example-distro target.")
# add_subdirectory( thirdparty )
add_subdirectory( src )

View File

@ -6,9 +6,12 @@ set( MODULE_DATA_DESTINATION share/calamares/modules )
function( calamares_add_module_subdirectory )
set( SUBDIRECTORY ${ARGV0} )
set( MODULE_CONFIG_FILES "" )
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
add_subdirectory( ${SUBDIRECTORY} )
file( GLOB MODULE_CONFIG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*.conf" )
# ...otherwise, we look for a module.desc.
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
@ -56,9 +59,23 @@ function( calamares_add_module_subdirectory )
RENAME calamares-${SUBDIRECTORY}.mo
)
endif()
else()
message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt or module.desc." )
message( "" )
endif()
# Check any config files for basic correctness
if ( BUILD_TESTING AND MODULE_CONFIG_FILES )
set( _count 0 )
foreach( _config_file ${MODULE_CONFIG_FILES} )
set( _count_str "-${_count}" )
if ( _count EQUAL 0 )
set( _count_str "" )
endif()
add_test(
NAME config-${SUBDIRECTORY}${_count_str}
COMMAND test_conf ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${_config_file} )
math( EXPR _count "${_count} + 1" )
endforeach()
endif()
endfunction()

View File

@ -9,6 +9,20 @@ if(NOT PYTHONLIBS_FOUND)
message(FATAL_ERROR "error: Python is required to build PythonQt")
endif()
# Cut X.Y[.Z] down to just X.Y
string(REGEX REPLACE
"^([0-9][0-9]*)\.([0-9][0-9]*)"
"\\1.\\2@"
_PYTHONLIBS_MAJMIN
${PYTHONLIBS_VERSION_STRING}
)
string(REGEX REPLACE
"@.*"
""
PYTHONLIBS_MAJMIN
${_PYTHONLIBS_MAJMIN}
)
if(NOT EXISTS "${PYTHONQT_INSTALL_DIR}")
find_path(PYTHONQT_INSTALL_DIR include/PythonQt/PythonQt.h DOC "Directory where PythonQt was installed.")
endif()
@ -22,17 +36,58 @@ find_path(PYTHONQT_INCLUDE_DIR PythonQt.h
"${PYTHONQT_INSTALL_DIR}/src"
DOC "Path to the PythonQt include directory")
# Minimum v3.1 is needed
find_library(PYTHONQT_LIBRARY_RELEASE PythonQt PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.")
find_library(PYTHONQT_LIBRARY_DEBUG NAMES PythonQt${CTK_CMAKE_DEBUG_POSTFIX} PythonQt${CMAKE_DEBUG_POSTFIX} PythonQt PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.")
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE PythonQt_QtAll PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.")
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG NAMES PythonQt_QtAll${CTK_CMAKE_DEBUG_POSTFIX} PythonQt_QtAll${CMAKE_DEBUG_POSTFIX} PythonQt_QtAll PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.")
if ( NOT PythonQt_FIND_QUIETLY )
message( STATUS "Searching for PythonQt (PythonLibs ${PYTHONLIBS_MAJMIN}) .." )
if ( PYTHONQT_INCLUDE_DIR )
message( STATUS " .. found include ${PYTHONQT_INCLUDE_DIR}" )
endif()
endif()
# Also check for v3.2+
find_library(PYTHONQT_LIBRARY_RELEASE PythonQt-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.")
find_library(PYTHONQT_LIBRARY_DEBUG NAMES PythonQt-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX} PythonQt-Qt5-Python3${CMAKE_DEBUG_POSTFIX} PythonQt-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.")
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE PythonQt_QtAll-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.")
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG NAMES PythonQt_QtAll-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX} PythonQt_QtAll-Qt5-Python3${CMAKE_DEBUG_POSTFIX} PythonQt_QtAll-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.")
# Minimum v3.1 is needed
find_library(PYTHONQT_LIBRARY_RELEASE
NAMES
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt-Qt5-Python3
PythonQt
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "The PythonQt library."
)
find_library(PYTHONQT_LIBRARY_DEBUG
NAMES
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}JMIN${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}${CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python3${CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python3
PythonQt${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt${CMAKE_DEBUG_POSTFIX}
PythonQt
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "The PythonQt library (debug build)."
)
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE
NAMES
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt_QtAll-Qt5-Python3
PythonQt_QtAll
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "Full Qt bindings for the PythonQt library."
)
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG
NAMES
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}${CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt_QtAll-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python3${CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python3
PythonQt_QtAll${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll${CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "Full Qt bindings for the PythonQt library (debug build)."
)
set(PYTHONQT_LIBRARY)
if(PYTHONQT_LIBRARY_RELEASE)
@ -50,6 +105,16 @@ if(PYTHONQT_QTALL_LIBRARY_DEBUG)
list(APPEND PYTHONQT_QTALL_LIBRARY debug ${PYTHONQT_QTALL_LIBRARY_DEBUG})
endif()
if ( NOT PythonQt_FIND_QUIETLY )
if ( PYTHONQT_LIBRARY )
message( STATUS " .. found library ${PYTHONQT_LIBRARY}" )
endif()
if ( PYTHONQT_QTALL_LIBRARY )
message( STATUS " .. found qtall ${PYTHONQT_QTALL_LIBRARY}" )
endif()
endif()
mark_as_advanced(PYTHONQT_INSTALL_DIR)
mark_as_advanced(PYTHONQT_INCLUDE_DIR)
mark_as_advanced(PYTHONQT_LIBRARY_RELEASE)

View File

@ -66,7 +66,11 @@ Comment[ja]=Calamares — システムインストーラー
Name[lt]=Calamares
Icon[lt]=calamares
GenericName[lt]=Sistemos diegimas į kompiuterį
Comment[lt]=Calamares sistemos diegyklė
Comment[lt]=Calamares Sistemos diegimo programa
Name[nb]=Calamares
Icon[nb]=calamares
GenericName[nb]=Systeminstallatør
Comment[nb]=Calamares-systeminstallatør
Name[nl]=Calamares
Icon[nl]=calamares
GenericName[nl]=Installatieprogramma
@ -81,8 +85,8 @@ GenericName[pt_BR]=Instalador de Sistema
Comment[pt_BR]=Calamares Instalador de Sistema
Name[cs_CZ]=Calamares
Icon[cs_CZ]=calamares
GenericName[cs_CZ]=Instalační program systému
Comment[cs_CZ]=Calamares - instalační program systému
GenericName[cs_CZ]=Instalátor systému
Comment[cs_CZ]=Calamares instalátor operačních systémů
Name[ru]=Calamares
Icon[ru]=calamares
GenericName[ru]=Установщик системы

View File

@ -1,9 +1,15 @@
Hacking on Calamares
====================
These are the guidelines for hacking on Calamares. Except for the licensing,
which **must** be GPLv3+, these are guidelines and -- like PEP8 -- the most
important thing is to know when you can ignore them.
Licensing
---------
Calamares is released under the terms of the GNU GPL, version 3 or later. Every source file must have a license header, with a list of copyright holders and years.
Calamares is released under the terms of the GNU GPL, version 3 or later.
Every source file must have a license header, with a list of copyright holders and years.
Example:
```
@ -34,9 +40,9 @@ organization, etc.
Please add your name to files you touch when making any contribution (even if
it's just a typo-fix which might not be copyrightable in all jurisdictions).
Formatting
----------
Formatting C++
--------------
This formatting guide applies to C++ code only; for Python modules, we use
[pycodestyle][https://github.com/PyCQA/pycodestyle] to apply a check of
some PEP8 guidelines.
@ -48,10 +54,10 @@ some PEP8 guidelines.
* No space before brackets, except for keywords, for example `function( argument )` but
`if ( condition )`.
* For pointer and reference variable declarations, put a space before the variable name
and no space between the type and the `*` or `&`.
* `for`, `if`, `else`, `while` and similar statements put the brackets on the next line,
although brackets are not needed for single statements.
* Function and class definitions have their brackets on separate lines.
and no space between the type and the `*` or `&`, e.g. `int* p`.
* `for`, `if`, `else`, `while` and similar statements put the braces on the next line,
if the following block is more than one statement. Use no braces for single statements.
* Function and class definitions have their braces on separate lines.
* A function implementation's return type is on its own line.
* `CamelCase.{cpp,h}` style file names.
@ -63,8 +69,9 @@ MyClass::myMethod( QStringList list, const QString& name )
if ( list.isEmpty() )
return false;
cDebug() << "Items in list ..";
foreach ( const QString& string, list )
cDebug() << "Current string is " << string;
cDebug() << " .." << string;
switch ( m_enumValue )
{
@ -77,7 +84,7 @@ MyClass::myMethod( QStringList list, const QString& name )
}
```
You can use the `hacking/calamaresstyle` script to run
You can use the `ci/calamaresstyle` script to run
[astyle](http://astyle.sf.net) on your code and have it formatted the right
way.
@ -85,6 +92,7 @@ way.
order to take advantage of this functionality you will need to acquire the
[EditorConfig](http://editorconfig.org/#download) plug-in for your editor.
Naming
------
* Use CamelCase for everything.
@ -97,6 +105,7 @@ Naming
* If it's a getter for a boolean, prefix with 'is', so `isCondition()`.
* A setter is `setVariable( arg )`.
Includes
--------
Header includes should be listed in the following order:
@ -109,8 +118,9 @@ Header includes should be listed in the following order:
They should also be sorted alphabetically for ease of locating them.
Includes in a header file should be kept to the absolute minimum, as to keep compile times short. This can be achieved by using forward declarations instead of includes,
like `class QListView;`.
Includes in a header file should be kept to the absolute minimum, as to keep
compile times short. This can be achieved by using forward declarations
instead of includes, like `class QListView;`.
Example:
```
@ -129,6 +139,7 @@ Example:
Use include guards, not `#pragma once`.
C++ tips
--------
All C++11 features are acceptable, and the use of new C++11 features is encouraged when
@ -160,10 +171,31 @@ connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, [this]
});
```
Debugging
---------
Use `cDebug()` and `cLog()` from `utils/Logger.h`.
[1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
[2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax
Debugging
---------
Use `cDebug()` and `cLog()` from `utils/Logger.h`. You can pass a debug-level to
either macro (1 is debugging, higher is less important). Use `cLog()` for warning
messages. It is recommended to add *WARNING* as the first part of a warning
message.
For log messages that are continued across multiple calls to `cDebug()`,
in particular listing things, conventional formatting is as follows:
* End the first debug message with ` ..`
* Indent following lines with ` ..`
Commit Messages
---------------
Keep commit messages short(-ish) and try to describe what is being changed
*as well as why*. Use the commit keywords for GitHub, especially *FIXES:*
to auto-close issues when they are resolved.
For functional changes to Calamares modules or libraries, try to put
*[modulename]* in front of the first line of the commit message.
For non-functional changes to infrastructure, try to label the change
with the kind of change, e.g. *CMake* or *i18n* or *Documentation*.

View File

@ -2,7 +2,9 @@ The Calamares release process
=============================
#### (0) A week in advance
* Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
* (Only releases from master)
Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
automatically once a week on master.
* Build with clang -Weverything, fix what's relevant.
```
@ -16,8 +18,10 @@ The Calamares release process
```
Note that *all* means all-that-make-sense. The partition-manager tests need
an additional environment variable to be set for some tests, which will
destroy an attached disk. This is not always desirable.
* Notify [translators][transifex]. In the dashboard there is an *Announcements*
destroy an attached disk. This is not always desirable. There are some
sample config-files that are empty and which fail the config-tests.
* (Only releases from master)
Notify [translators][transifex]. In the dashboard there is an *Announcements*
link that you can use to send a translation announcement.
[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview
@ -27,17 +31,24 @@ The Calamares release process
* Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set
RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that.
* Check `README.md` and everything in `hacking`, make sure it's all still
relevant. Run `hacking/calamaresstyle` to check the C++ code style.
Python code is checked as part of the Travis CI builds.
* Check `README.md` and everything `ci/HACKING.md`, make sure it's all still
relevant. Run `ci/calamaresstyle` to check the C++ code style.
Run pycodestyle on recently-modified Python modules, fix what makes sense.
* Check defaults in `settings.conf` and other configuration files.
* Pull latest translations from Transifex. This is done nightly on Jenkins,
so a manual pull is rarely necessary.
* Update the list of enabled translation languages in `CMakeLists.txt`.
* (Only releases from master)
Pull latest translations from Transifex. We only push / pull translations
from master, so longer-lived branches (e.g. 3.1.x) don't get translation
updates. This is to keep the translation workflow simple.
```
sh ci/txpull.sh
```
* (Only releases from master)
Update the list of enabled translation languages in `CMakeLists.txt`.
Check the [translation site][transifex] for the list of languages with
fairly complete translations.
#### (2) Tarball
* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without
the helper script,
```
@ -45,9 +56,10 @@ The Calamares release process
git archive -o $V.tar.gz --prefix $V/ master
```
Double check that the tarball matches the version number.
* Test tarball.
* Test tarball (e.g. unpack somewhere else and run the tests from step 0).
#### (3) Tag
* Set RC to zero in `CMakeLists.txt` if this is the actual release.
* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the
tag is shown as a verified tag. Do not sign -rc tags.
@ -57,6 +69,7 @@ The Calamares release process
* Write release article.
#### (4) Release day
* Publish tarball.
* Update download page.
* Publish release article on `calamares.io`.

View File

@ -1,44 +0,0 @@
#!/bin/bash
# Make sure we can make git operations from the Calamares Docker+Jenkins environment.
cp ~/jenkins-master/.gitconfig ~
cp -R ~/jenkins-master/.ssh ~
cd "$WORKSPACE"
git config --global http.sslVerify false
rm -Rf "$WORKSPACE/prefix"
mkdir "$WORKSPACE/prefix"
git clone git://anongit.kde.org/kpmcore "$WORKSPACE/kpmcore"
cd "$WORKSPACE/kpmcore"
mkdir "$WORKSPACE/kpmcore/build"
cd "$WORKSPACE/kpmcore/build"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
nice -n 18 make -j2
make DESTDIR="$WORKSPACE/prefix" install
cd "$WORKSPACE"
wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \
--post-data "token=ll90T04noQ4cORJx_zczKA&project=calamares%2Fcalamares" \
-O coverity_tool.tar.gz
mkdir "$WORKSPACE/coveritytool"
tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2
export PATH="$WORKSPACE/coveritytool/bin:$PATH"
rm -Rf "$WORKSPACE/build"
mkdir "$WORKSPACE/build"
cd "$WORKSPACE/build"
CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr -DWEBVIEW_FORCE_WEBKIT=1 ..
nice -n 18 cov-build --dir cov-int make -j2
tar caf calamares-ci.tar.xz cov-int
curl -k --form token=ll90T04noQ4cORJx_zczKA \
--form email=teo@kde.org \
--form file=@calamares-ci.tar.xz \
--form version="master-`date -u +%Y%m%d`" \
--form description="master on `date -u`" \
https://scan.coverity.com/builds?project=calamares%2Fcalamares

View File

@ -1,30 +0,0 @@
#!/bin/bash
#Hack for Coverity build, so the compiler doesn't complain about InheritanceChecker
sudo cp ~/jenkins-master/kpluginfactory.h /usr/include/KF5/KCoreAddons
cd "$WORKSPACE"
wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \
--post-data "token=cyOjQZx5EOFLdhfo7ZDa4Q&project=KDE+Partition+Manager+Core+Library+-+KPMcore" \
-O coverity_tool.tar.gz
mkdir "$WORKSPACE/coveritytool"
tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2
export PATH="$WORKSPACE/coveritytool/bin:$PATH"
rm -Rf "$WORKSPACE/build"
mkdir "$WORKSPACE/build"
cd "$WORKSPACE/build"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
nice -n 18 cov-build --dir cov-int make -j2
tar cavf kpmcore-ci.tar.xz cov-int
cat cov-int/build-log.txt
curl -k --form token=cyOjQZx5EOFLdhfo7ZDa4Q \
--form email=teo@kde.org \
--form file=@kpmcore-ci.tar.xz \
--form version="master-`date -u +%Y%m%d`" \
--form description="master on `date -u`" \
https://scan.coverity.com/builds?project=KDE+Partition+Manager+Core+Library+-+KPMcore

15
ci/travis-continuous.sh Executable file
View File

@ -0,0 +1,15 @@
#! /bin/sh
#
# Travis CI script for use on every-commit:
# - build and install Calamares
#
test -n "$BUILDDIR" || exit 1
test -n "$SRCDIR" || exit 1
test -d $BUILDDIR || exit 1
test -d $SRCDIR || exit 1
test -f $SRCDIR/CMakeLists.txt || exit 1
cd $BUILDDIR || exit 1
cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR && make -j2 && make install DESTDIR=/build/INSTALL_ROOT

34
ci/travis-coverity.sh Executable file
View File

@ -0,0 +1,34 @@
#! /bin/sh
#
# Travis CI script for weekly (cron) use:
# - use the coverity tool to build and and upload results
#
test -n "$COVERITY_SCAN_TOKEN" || exit 1
test -n "$BUILDDIR" || exit 1
test -n "$SRCDIR" || exit 1
test -d $BUILDDIR || exit 1
test -d $SRCDIR || exit 1
test -f $SRCDIR/CMakeLists.txt || exit 1
cd $BUILDDIR || exit 1
curl -k -o coverity_tool.tar.gz \
-d "token=$COVERITY_SCAN_TOKEN&project=calamares%2Fcalamares" \
https://scan.coverity.com/download/cxx/linux64 || exit 1
mkdir "$BUILDDIR/coveritytool"
tar xvf coverity_tool.tar.gz -C "$BUILDDIR/coveritytool" --strip-components 2
export PATH="$BUILDDIR/coveritytool/bin:$PATH"
cmake -DCMAKE_BUILD_TYPE=Debug -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR || exit 1
cov-build --dir cov-int make -j2
tar caf calamares-ci.tar.xz cov-int
curl -k --form token=$COVERITY_SCAN_TOKEN \
--form email=groot@kde.org \
--form file=@calamares-ci.tar.xz \
--form version="master-`date -u +%Y%m%d`" \
--form description="master on `date -u`" \
https://scan.coverity.com/builds?project=calamares%2Fcalamares

19
ci/travis.sh Executable file
View File

@ -0,0 +1,19 @@
#! /bin/sh
#
# Travis build driver script:
# - the regular CI runs, triggered by commits, run a script that builds
# and installs calamares, and then runs the tests.
# - the cronjob CI runs, triggered weekly, run a script that uses the
# coverity tools to submit a build. This is slightly more resource-
# intensive than the coverity add-on, but works on master.
#
D=`dirname "$0"`
test -d "$D" || exit 1
test -x "$D/travis-continuous.sh" || exit 1
test -x "$D/travis-coverity.sh" || exit 1
if test "$TRAVIS_EVENT_TYPE" = "cron" ; then
exec "$D/travis-coverity.sh"
else
exec "$D/travis-continuous.sh"
fi

View File

@ -2225,12 +2225,12 @@ L&apos;instal·lador es tancarà i tots els canvis es perdran.</translation>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>La contrasenya és massa curta.</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>La contrasenya és massa llarga.</translation>
</message>
</context>
<context>

File diff suppressed because it is too large Load Diff

View File

@ -631,7 +631,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="73"/>
<source>Creating new %1 partition on %2.</source>
<translation>Opretter ny %1 partition %2.</translation>
<translation>Opretter ny %1-partition %2.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="85"/>
@ -692,12 +692,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="50"/>
<source>Create new %1 partition table on %2.</source>
<translation>Opret en ny %1 partitionstabel %2.</translation>
<translation>Opret en ny %1-partitionstabel %2.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="57"/>
<source>Create new &lt;strong&gt;%1&lt;/strong&gt; partition table on &lt;strong&gt;%2&lt;/strong&gt; (%3).</source>
<translation>Opret en ny &lt;strong&gt;%1&lt;/strong&gt; partitionstabel på &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
<translation>Opret en ny &lt;strong&gt;%1&lt;/strong&gt;-partitionstabel på &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="67"/>
@ -984,7 +984,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="191"/>
<source>Install %1 on &lt;strong&gt;new&lt;/strong&gt; %2 system partition.</source>
<translation>Installér %1 &lt;strong&gt;nye&lt;/strong&gt; %2-systempartition.</translation>
<translation>Installér %1 &lt;strong&gt;ny&lt;/strong&gt; %2-systempartition.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="195"/>
@ -2225,12 +2225,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Adgangskoden er for kort</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Adgangskoden er for lang</translation>
</message>
</context>
<context>

View File

@ -2225,12 +2225,12 @@ L&apos;installateur se fermera et les changements seront perdus.</translation>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Le mot de passe est trop court</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Le mot de passe est trop long</translation>
</message>
</context>
<context>

View File

@ -1254,39 +1254,39 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="387"/>
<source>The system language will be set to %1.</source>
<translation type="unfinished"/>
<translation>A linguaxe do sistema será establecida a %1.</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="389"/>
<source>The numbers and dates locale will be set to %1.</source>
<translation type="unfinished"/>
<translation>A localización de números e datas será establecida a %1.</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="215"/>
<source>Region:</source>
<translation type="unfinished"/>
<translation>Rexión:</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="216"/>
<source>Zone:</source>
<translation type="unfinished"/>
<translation>Zona:</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="220"/>
<location filename="../src/modules/locale/LocalePage.cpp" line="221"/>
<source>&amp;Change...</source>
<translation type="unfinished"/>
<translation>&amp;Cambio...</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="398"/>
<source>Set timezone to %1/%2.&lt;br/&gt;</source>
<translation type="unfinished"/>
<translation>Establecer a zona de tempo a %1/%2.&lt;br/&gt;</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="480"/>
<source>%1 (%2)</source>
<extracomment>Language (Country)</extracomment>
<translation type="unfinished"/>
<translation>%1 (%2)</translation>
</message>
</context>
<context>
@ -1294,12 +1294,12 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/locale/LocaleViewStep.cpp" line="52"/>
<source>Loading location data...</source>
<translation type="unfinished"/>
<translation>Cargando datos de localización...</translation>
</message>
<message>
<location filename="../src/modules/locale/LocaleViewStep.cpp" line="169"/>
<source>Location</source>
<translation type="unfinished"/>
<translation>Localización...</translation>
</message>
</context>
<context>
@ -1307,48 +1307,48 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="66"/>
<source>Move file system of partition %1.</source>
<translation type="unfinished"/>
<translation>Move-lo sistema de ficheiro da partición %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="80"/>
<source>Could not open file system on partition %1 for moving.</source>
<translation type="unfinished"/>
<translation>Non foi posible abri-lo sistema de ficheiros na partición %1 para move-lo.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="86"/>
<source>Could not create target for moving file system on partition %1.</source>
<translation type="unfinished"/>
<translation>Non foi posible crea-lo destino para move-lo sistema de ficheiros na partición %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="95"/>
<source>Moving of partition %1 failed, changes have been rolled back.</source>
<translation type="unfinished"/>
<translation>Fallou move-la partición %1, desfixeronse os cambios.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="101"/>
<source>Moving of partition %1 failed. Roll back of the changes have failed.</source>
<translation type="unfinished"/>
<translation>Fallou move-la partición %1. Non se pudo desface-los cambios.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="113"/>
<source>Updating boot sector after the moving of partition %1 failed.</source>
<translation type="unfinished"/>
<translation>Actualizando o sector de arranque tra-lo fallo do movimento da partición %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="127"/>
<source>The logical sector sizes in the source and target for copying are not the same. This is currently unsupported.</source>
<translation type="unfinished"/>
<translation>O tamaño do sector lóxico na orixe e no destino para a copia non é o mesmo. Actualmente non é posible face-lo.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="201"/>
<source>Source and target for copying do not overlap: Rollback is not required.</source>
<translation type="unfinished"/>
<translation>Orixe e destino para copia non se superpoñen: Non cómpre desfacer.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="225"/>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="233"/>
<source>Could not open device %1 to rollback copying.</source>
<translation type="unfinished"/>
<translation>Non se pudo abrir o dispositivo %1 para copia de respaldo.</translation>
</message>
</context>
<context>
@ -1356,18 +1356,18 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="79"/>
<source>Name</source>
<translation type="unfinished"/>
<translation>Nome</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="80"/>
<source>Description</source>
<translation type="unfinished"/>
<translation>Descripción</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="97"/>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="104"/>
<source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source>
<translation type="unfinished"/>
<translation>Installación por rede. (Desactivadas. Non se pudo recupera-la lista de pacotes, comprobe a sua conexión a rede)</translation>
</message>
</context>
<context>
@ -1375,7 +1375,7 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/>
<source>Package selection</source>
<translation type="unfinished"/>
<translation>Selección de pacotes.</translation>
</message>
</context>
<context>
@ -1388,12 +1388,12 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="70"/>
<source>Keyboard Model:</source>
<translation type="unfinished"/>
<translation>Modelo de teclado.</translation>
</message>
<message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="131"/>
<source>Type here to test your keyboard</source>
<translation type="unfinished"/>
<translation>Teclee aquí para comproba-lo seu teclado.</translation>
</message>
</context>
<context>
@ -1406,49 +1406,49 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="36"/>
<source>What is your name?</source>
<translation type="unfinished"/>
<translation>Cal é o seu nome?</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="117"/>
<source>What name do you want to use to log in?</source>
<translation type="unfinished"/>
<translation>Cal é o nome que quere usar para entrar?</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="306"/>
<location filename="../src/modules/users/page_usersetup.ui" line="437"/>
<location filename="../src/modules/users/page_usersetup.ui" line="582"/>
<source>font-weight: normal</source>
<translation type="unfinished"/>
<translation>Tamaño de letra: normal</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="200"/>
<source>&lt;small&gt;If more than one person will use this computer, you can set up multiple accounts after installation.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;Se máis dunha persoa vai usa-lo computador, pode configurar contas múltiples trala instalción.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="335"/>
<source>Choose a password to keep your account safe.</source>
<translation type="unfinished"/>
<translation>Escolla un contrasinal para mante-la sua conta segura.</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="440"/>
<source>&lt;small&gt;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.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;Entre o mesmo contrasinal dúas veces, deste xeito podese comprobar errores ó teclear. Un bo contrasinal debe conter un conxunto de letras, números e signos de puntuación, deberá ter como mínimo oito carácteres, e debe cambiarse a intervalos de tempo regulares.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="226"/>
<source>What is the name of this computer?</source>
<translation type="unfinished"/>
<translation>Cal é o nome deste computador?</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="309"/>
<source>&lt;small&gt;This name will be used if you make the computer visible to others on a network.&lt;/small&gt;</source>
<translation type="unfinished"/>
<translation>&lt;small&gt;Este nome usarase se fai o computador visible para outros nunha rede.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="450"/>
<source>Log in automatically without asking for the password.</source>
<translation type="unfinished"/>
<translation>Entrar automáticamente sen preguntar polo contrasinal.</translation>
</message>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="457"/>

View File

@ -2225,12 +2225,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>הסיסמה קצרה מדי</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>הסיסמה ארוכה מדי</translation>
</message>
</context>
<context>

View File

@ -2225,12 +2225,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.</translatio
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Lozinka je prekratka</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Lozinka je preduga</translation>
</message>
</context>
<context>

View File

@ -240,7 +240,7 @@ Išvestis:
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/>
<source>Cancel installation without changing the system.</source>
<translation>Atsisakyti diegimo, nieko nekeisti sistemoje.</translation>
<translation>Atsisakyti diegimo, nieko sistemoje nekeičiant.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/>
@ -277,7 +277,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="234"/>
<source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source>
<translation>%1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.&lt;br/&gt;&lt;strong&gt;Negalėsite atšaukti š pakeitimų.&lt;/strong&gt;</translation>
<translation>%1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.&lt;br/&gt;&lt;strong&gt;Š pakeitimų atšaukti nebegalėsite.&lt;/strong&gt;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/>
@ -369,12 +369,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="113"/>
<source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source>
<translation>Šis kompiuteris netenkina kai kurių %1 diegimui rekomenduojamų reikalavimų.&lt;br/&gt;Diegti galite, bet kai kurios funkcijos gali būti išjungtos.</translation>
<translation>Šis kompiuteris netenkina kai kurių %1 diegimui rekomenduojamų reikalavimų.&lt;br/&gt;Diegimą galima tęsti, tačiau kai kurios funkcijos gali būti išjungtos.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="151"/>
<source>This program will ask you some questions and set up %2 on your computer.</source>
<translation>Programa užduos klausimus ir padės įsidiegti %2.</translation>
<translation>Programa užduos kelis klausimus ir padės įsidiegti %2.</translation>
</message>
<message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="174"/>
@ -908,12 +908,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/>
<source>Format</source>
<translation>Suženklinti</translation>
<translation>Formatuoti</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="89"/>
<source>Warning: Formatting the partition will erase all existing data.</source>
<translation>Įspėjimas: suženklinant skaidinį, sunaikinami visi jame esantys duomenys.</translation>
<translation>Įspėjimas: Formatuojant skaidinį, sunaikinami visi jame esantys duomenys.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="99"/>
@ -1058,22 +1058,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="49"/>
<source>Format partition %1 (file system: %2, size: %3 MB) on %4.</source>
<translation>Suženklinti skaidinį %1 (failų sistema: %2, dydis: %3 MB) diske %4.</translation>
<translation>Formatuoti skaidinį %1 (failų sistema: %2, dydis: %3 MB) diske %4.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="60"/>
<source>Format &lt;strong&gt;%3MB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; with file system &lt;strong&gt;%2&lt;/strong&gt;.</source>
<translation>Suženklinti &lt;strong&gt;%3MB&lt;/strong&gt; skaidinį &lt;strong&gt;%1&lt;/strong&gt; su failų sistema &lt;strong&gt;%2&lt;/strong&gt;.</translation>
<translation>Formatuoti &lt;strong&gt;%3MB&lt;/strong&gt; skaidinį &lt;strong&gt;%1&lt;/strong&gt; su failų sistema &lt;strong&gt;%2&lt;/strong&gt;.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="71"/>
<source>Formatting partition %1 with file system %2.</source>
<translation>Suženklinamas skaidinys %1 su %2 failų sistema.</translation>
<translation>Formatuojamas skaidinys %1 su %2 failų sistema.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="83"/>
<source>The installer failed to format partition %1 on disk &apos;%2&apos;.</source>
<translation>Diegimo programai nepavyko suženklinti %2 disko skaidinio %1.</translation>
<translation>Diegimo programai nepavyko formatuoti %2 disko skaidinio %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="91"/>
@ -1237,7 +1237,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="202"/>
<source>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</source>
<translation>&lt;a href=&quot;%1&quot;&gt;žiūrėti licenciją&lt;/a&gt;</translation>
<translation>&lt;a href=&quot;%1&quot;&gt;žiūrėti licencijos sutartį&lt;/a&gt;</translation>
</message>
</context>
<context>
@ -1578,7 +1578,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="121"/>
<source>&amp;Delete</source>
<translation>Ša&amp;linti</translation>
<translation>&amp;trinti</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="148"/>
@ -2225,12 +2225,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Slaptažodis yra per trumpas</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Slaptažodis yra per ilgas</translation>
</message>
</context>
<context>

View File

@ -37,12 +37,12 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source>
<translation type="unfinished"/>
<translation> िि </translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
<source>%1 (%2)</source>
<translation type="unfinished"/>
<translation>%1 (%2)</translation>
</message>
</context>
<context>
@ -115,12 +115,12 @@
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/>
<source>Run command %1 %2</source>
<translation type="unfinished"/>
<translation>%1 %2 </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="60"/>
<source>Running command %1 %2</source>
<translation type="unfinished"/>
<translation>%1 %2 </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="89"/>
@ -137,17 +137,17 @@ Output:
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="95"/>
<source>External command failed to start</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="96"/>
<source>Command %1 failed to start.</source>
<translation type="unfinished"/>
<translation>%1 </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="100"/>
<source>Internal error when starting command</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="101"/>
@ -157,26 +157,30 @@ Output:
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="104"/>
<source>External command failed to finish</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="105"/>
<source>Command %1 failed to finish in %2s.
Output:
%3</source>
<translation type="unfinished"/>
<translation>%1 %2s .
:
%3</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="111"/>
<source>External command finished with errors</source>
<translation type="unfinished"/>
<translation> ि </translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="112"/>
<source>Command %1 finished with exit code %2.
Output:
%3</source>
<translation type="unfinished"/>
<translation>%1 %2 ि ि .
:
%3</translation>
</message>
</context>
<context>
@ -184,7 +188,7 @@ Output:
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="265"/>
<source>Running %1 operation.</source>
<translation type="unfinished"/>
<translation>%1 ि </translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="280"/>
@ -217,29 +221,29 @@ Output:
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/>
<source>&amp;Back</source>
<translation type="unfinished"/>
<translation>&amp;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/>
<source>&amp;Next</source>
<translation type="unfinished"/>
<translation>&amp;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="300"/>
<source>&amp;Cancel</source>
<translation type="unfinished"/>
<translation>&amp; </translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/>
<source>Cancel installation without changing the system.</source>
<translation type="unfinished"/>
<translation> ि .</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/>
<source>Cancel installation?</source>
<translation type="unfinished"/>
<translation>ि ?</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="100"/>
@ -250,17 +254,17 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="105"/>
<source>&amp;Yes</source>
<translation type="unfinished"/>
<translation>&amp;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="106"/>
<source>&amp;No</source>
<translation type="unfinished"/>
<translation>&amp;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="183"/>
<source>&amp;Close</source>
<translation type="unfinished"/>
<translation>&amp; </translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="233"/>
@ -275,32 +279,32 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/>
<source>&amp;Install now</source>
<translation type="unfinished"/>
<translation>&amp; िि </translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="240"/>
<source>Go &amp;back</source>
<translation type="unfinished"/>
<translation>&amp; </translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="269"/>
<source>&amp;Done</source>
<translation type="unfinished"/>
<translation>&amp; </translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/>
<source>The installation is complete. Close the installer.</source>
<translation type="unfinished"/>
<translation>ि . ि .</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>Error</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="181"/>
<source>Installation Failed</source>
<translation type="unfinished"/>
<translation>ि </translation>
</message>
</context>
<context>
@ -331,7 +335,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="45"/>
<source>%1 Installer</source>
<translation type="unfinished"/>
<translation>%1 ि</translation>
</message>
<message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="112"/>
@ -344,12 +348,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="39"/>
<source>Checking file system on partition %1.</source>
<translation type="unfinished"/>
<translation>%1 ि .</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="77"/>
<source>The file system check on partition %1 failed.</source>
<translation type="unfinished"/>
<translation>%1 ि ि .</translation>
</message>
</context>
<context>
@ -377,7 +381,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="202"/>
<source>System requirements</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
</context>
<context>
@ -418,7 +422,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="950"/>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1029"/>
<source>Current:</source>
<translation type="unfinished"/>
<translation> :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="775"/>
@ -541,7 +545,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/>
<source>Create a Partition</source>
<translation type="unfinished"/>
<translation>ि ि </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="48"/>
@ -551,12 +555,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="55"/>
<source>Partition &amp;Type:</source>
<translation type="unfinished"/>
<translation>ि &amp; :</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="67"/>
<source>&amp;Primary</source>
<translation type="unfinished"/>
<translation>&amp;ि</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="77"/>
@ -591,12 +595,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="162"/>
<source>Logical</source>
<translation type="unfinished"/>
<translation>ि</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="167"/>
<source>Primary</source>
<translation type="unfinished"/>
<translation>ि</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="184"/>
@ -624,7 +628,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="73"/>
<source>Creating new %1 partition on %2.</source>
<translation type="unfinished"/>
<translation>%2 %1 ि ि </translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="85"/>
@ -657,7 +661,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="20"/>
<source>Create Partition Table</source>
<translation type="unfinished"/>
<translation>ि ि </translation>
</message>
<message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="39"/>
@ -1935,7 +1939,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="61"/>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="68"/>
<source>Internal Error</source>
<translation type="unfinished"/>
<translation>  </translation>
</message>
<message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="75"/>
@ -2133,7 +2137,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="43"/>
<source>Set timezone to %1/%2</source>
<translation type="unfinished"/>
<translation>%1/%2 िि </translation>
</message>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="71"/>
@ -2148,7 +2152,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="86"/>
<source>Cannot set timezone.</source>
<translation type="unfinished"/>
<translation> िि </translation>
</message>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="87"/>
@ -2158,12 +2162,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="96"/>
<source>Cannot set timezone,</source>
<translation type="unfinished"/>
<translation> िि ,</translation>
</message>
<message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="97"/>
<source>Cannot open /etc/timezone for writing</source>
<translation type="unfinished"/>
<translation> /etc/timezone ििि </translation>
</message>
</context>
<context>
@ -2179,7 +2183,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/summary/SummaryViewStep.cpp" line="43"/>
<source>Summary</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@ -2187,43 +2191,43 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="287"/>
<source>Your username is too long.</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="293"/>
<source>Your username contains invalid characters. Only lowercase letters and numbers are allowed.</source>
<translation type="unfinished"/>
<translation> . , ि .</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="331"/>
<source>Your hostname is too short.</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="337"/>
<source>Your hostname is too long.</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="343"/>
<source>Your hostname contains invalid characters. Only letters, numbers and dashes are allowed.</source>
<translation type="unfinished"/>
<translation> . , ि .</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="371"/>
<location filename="../src/modules/users/UsersPage.cpp" line="415"/>
<source>Your passwords do not match!</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation> </translation>
</message>
</context>
<context>
@ -2231,7 +2235,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/UsersViewStep.cpp" line="50"/>
<source>Users</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@ -2239,47 +2243,47 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="75"/>
<source>&amp;Language:</source>
<translation type="unfinished"/>
<translation>&amp; :</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="176"/>
<source>&amp;Release notes</source>
<translation type="unfinished"/>
<translation>&amp; ि</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="166"/>
<source>&amp;Known issues</source>
<translation type="unfinished"/>
<translation>&amp; </translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="156"/>
<source>&amp;Support</source>
<translation type="unfinished"/>
<translation>%1 </translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="146"/>
<source>&amp;About</source>
<translation type="unfinished"/>
<translation>&amp;ि</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>
<source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1 ि .&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;%1 ि .&lt;/h1&gt;</translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="73"/>
<source>About %1 installer</source>
<translation type="unfinished"/>
<translation>%1 ि </translation>
</message>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/>
@ -2289,7 +2293,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/>
<source>%1 support</source>
<translation type="unfinished"/>
<translation>%1 </translation>
</message>
</context>
<context>
@ -2297,7 +2301,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/>
<source>Welcome</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
</TS>

View File

@ -37,7 +37,7 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source>
<translation type="unfinished"/>
<translation>Ikke installer en oppstartslaster</translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
@ -81,12 +81,12 @@
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/>
<source>Interface:</source>
<translation type="unfinished"/>
<translation>Grensesnitt:</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/>
<source>Tools</source>
<translation type="unfinished"/>
<translation>Verktøy</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="182"/>
@ -99,7 +99,7 @@
<message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="77"/>
<source>Install</source>
<translation type="unfinished"/>
<translation>Installer</translation>
</message>
</context>
<context>

View File

@ -2225,12 +2225,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.</translatio
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Hasło jest zbyt krótkie</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Hasło jest zbyt długie</translation>
</message>
</context>
<context>

View File

@ -2227,12 +2227,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.</trans
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>A senha é muito curta</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>A senha é muito longa</translation>
</message>
</context>
<context>

View File

@ -1162,12 +1162,12 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/>
<source>&amp;Cancel</source>
<translation type="unfinished"/>
<translation>&amp;Cancelar</translation>
</message>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/>
<source>&amp;OK</source>
<translation type="unfinished"/>
<translation>&amp;OK</translation>
</message>
</context>
<context>
@ -2225,12 +2225,12 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>A palavra-passe é demasiado curta</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>A palavra-passe é demasiado longa</translation>
</message>
</context>
<context>

View File

@ -2225,12 +2225,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené.</translation>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Heslo je príliš krátke</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Heslo je príliš dlhé</translation>
</message>
</context>
<context>
@ -2304,7 +2304,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené.</translation>
<message>
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/>
<source>Welcome</source>
<translation>Vitajte</translation>
<translation>Uvítanie</translation>
</message>
</context>
</TS>

View File

@ -1162,12 +1162,12 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/>
<source>&amp;Cancel</source>
<translation type="unfinished"/>
<translation>&amp;Avsluta</translation>
</message>
<message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/>
<source>&amp;OK</source>
<translation type="unfinished"/>
<translation>&amp;Okej</translation>
</message>
</context>
<context>
@ -1185,17 +1185,17 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="115"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Licensavtal&lt;/h1&gt;Denna installationsprocedur kommer att installera proprietär mjukvara som omfattas av licensvillkor.</translation>
</message>
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="118"/>
<source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</source>
<translation type="unfinished"/>
<translation>Läs igenom End User Agreements (EULA:s) ovan.&lt;br/&gt;Om du inte accepterar villkoren kan inte installationsproceduren fortsätta.</translation>
</message>
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="124"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</source>
<translation type="unfinished"/>
<translation>&lt;h1&gt;Licensavtal&lt;/h1&gt;Denna installationsprocedur kan installera proprietär mjukvara som omfattas av licensvillkor för att tillhandahålla ytterligare funktioner och förbättra användarupplevelsen.</translation>
</message>
<message>
<location filename="../src/modules/license/LicensePage.cpp" line="129"/>
@ -1253,7 +1253,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="387"/>
<source>The system language will be set to %1.</source>
<translation type="unfinished"/>
<translation>Systemspråket kommer ändras till %1.</translation>
</message>
<message>
<location filename="../src/modules/locale/LocalePage.cpp" line="389"/>
@ -1285,7 +1285,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<location filename="../src/modules/locale/LocalePage.cpp" line="480"/>
<source>%1 (%2)</source>
<extracomment>Language (Country)</extracomment>
<translation type="unfinished"/>
<translation>%1 (%2)</translation>
</message>
</context>
<context>
@ -1355,18 +1355,18 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="79"/>
<source>Name</source>
<translation type="unfinished"/>
<translation>Namn</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="80"/>
<source>Description</source>
<translation type="unfinished"/>
<translation>Beskrivning</translation>
</message>
<message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="97"/>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="104"/>
<source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source>
<translation type="unfinished"/>
<translation>Nätverksinstallation. (Inaktiverad: Kan inte hämta paketlistor, kontrollera nätverksanslutningen)</translation>
</message>
</context>
<context>
@ -1374,7 +1374,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/>
<source>Package selection</source>
<translation type="unfinished"/>
<translation>Paketval</translation>
</message>
</context>
<context>
@ -1500,7 +1500,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="207"/>
<source>New partition</source>
<translation type="unfinished"/>
<translation>Ny partition</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="224"/>
@ -1858,7 +1858,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message>
<location filename="../src/modules/welcome/checker/RequirementsChecker.cpp" line="156"/>
<source>The screen is too small to display the installer.</source>
<translation type="unfinished"/>
<translation>Skärmen är för liten för att visa installationshanteraren.</translation>
</message>
</context>
<context>

View File

@ -2230,12 +2230,12 @@ Sistem güç kaynağına bağlı değil.</translation>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation>Şifre çok kısa</translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation>Şifre çok uzun</translation>
</message>
</context>
<context>

View File

@ -4,17 +4,17 @@
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="69"/>
<source>The &lt;strong&gt;boot environment&lt;/strong&gt; of this system.&lt;br&gt;&lt;br&gt;Older x86 systems only support &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Modern systems usually use &lt;strong&gt;EFI&lt;/strong&gt;, but may also show up as BIOS if started in compatibility mode.</source>
<translation type="unfinished"/>
<translation>&lt;strong&gt;Завантажувальне середовище&lt;/strong&gt; цієї системи.&lt;br&gt;&lt;br&gt;Старі x86-системи підтримують тільки &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Нові системи зазвичай використовують&lt;strong&gt;EFI&lt;/strong&gt;, проте можуть також відображатися як BIOS, якщо запущені у режимі сумісності.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="79"/>
<source>This system was started with an &lt;strong&gt;EFI&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from an EFI environment, this installer must deploy a boot loader application, like &lt;strong&gt;GRUB&lt;/strong&gt; or &lt;strong&gt;systemd-boot&lt;/strong&gt; on an &lt;strong&gt;EFI System Partition&lt;/strong&gt;. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
<translation type="unfinished"/>
<translation>Цю систему було запущено із завантажувальним середовищем &lt;strong&gt;EFI&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Щоб налаштувати завантаження з середовища EFI, установник повинен встановити на &lt;strong&gt;Системний Розділ EFI&lt;/strong&gt; програму-завантажувач таку, як &lt;strong&gt;GRUB&lt;/strong&gt; або &lt;strong&gt;systemd-boot&lt;/strong&gt;. Це буде зроблено автоматично, якщо ви не обрали розподілення диску вручну. В останньому випадку вам потрібно обрати завантажувач або встановити його власноруч.</translation>
</message>
<message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="91"/>
<source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; 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.</source>
<translation type="unfinished"/>
<translation>Цю систему було запущено із завантажувальним середовищем &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Щоб налаштувати завантаження з середовища BIOS, установник повинен встановити завантажувач, такий, як &lt;strong&gt;GRUB&lt;/strong&gt; або на початку розділу або у &lt;strong&gt;Головний Завантажувальний Запис (Master Boot Record)&lt;/strong&gt; біля початку таблиці розділів (рекомендовано). Це буде зроблено автотматично, якщо ви не обрали розподілення диску вручну. В останньому випадку вам потрібно встановити завантажувач власноруч.</translation>
</message>
</context>
<context>
@ -22,7 +22,7 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="59"/>
<source>Master Boot Record of %1</source>
<translation type="unfinished"/>
<translation>Головний Завантажувальний Запис (Master Boot Record) %1</translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="76"/>
@ -37,12 +37,12 @@
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source>
<translation type="unfinished"/>
<translation>Не встановлювати завантажувач</translation>
</message>
<message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
<source>%1 (%2)</source>
<translation type="unfinished"/>
<translation>%1 (%2)</translation>
</message>
</context>
<context>
@ -50,48 +50,48 @@
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="14"/>
<source>Form</source>
<translation type="unfinished"/>
<translation>Форма</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="24"/>
<source>GlobalStorage</source>
<translation type="unfinished"/>
<translation>Глобальне сховище</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="34"/>
<source>JobQueue</source>
<translation type="unfinished"/>
<translation>Черга завдань</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="44"/>
<source>Modules</source>
<translation type="unfinished"/>
<translation>Модулі</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="57"/>
<source>Type:</source>
<translation type="unfinished"/>
<translation>Тип:</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="64"/>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="78"/>
<source>none</source>
<translation type="unfinished"/>
<translation>немає</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/>
<source>Interface:</source>
<translation type="unfinished"/>
<translation>Інтерфейс:</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/>
<source>Tools</source>
<translation type="unfinished"/>
<translation>Інструменти</translation>
</message>
<message>
<location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="182"/>
<source>Debug information</source>
<translation type="unfinished"/>
<translation>Відлагоджувальна інформація</translation>
</message>
</context>
<context>
@ -99,7 +99,7 @@
<message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="77"/>
<source>Install</source>
<translation type="unfinished"/>
<translation>Встановити</translation>
</message>
</context>
<context>
@ -115,68 +115,74 @@
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/>
<source>Run command %1 %2</source>
<translation type="unfinished"/>
<translation>Запустити команду %1 %2</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="60"/>
<source>Running command %1 %2</source>
<translation type="unfinished"/>
<translation>Запуск команди %1 %2</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="89"/>
<source>External command crashed</source>
<translation type="unfinished"/>
<translation>Зовнішня команда завершилася аварією</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="90"/>
<source>Command %1 crashed.
Output:
%2</source>
<translation type="unfinished"/>
<translation>Команда %1 завершилася аварією.
Вивід:
%2</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="95"/>
<source>External command failed to start</source>
<translation type="unfinished"/>
<translation>Не вдалося запустити зовнішню команду</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="96"/>
<source>Command %1 failed to start.</source>
<translation type="unfinished"/>
<translation>Не вдалося запустити команду %1.</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="100"/>
<source>Internal error when starting command</source>
<translation type="unfinished"/>
<translation>Внутрішня помилка під час запуску команди</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="101"/>
<source>Bad parameters for process job call.</source>
<translation type="unfinished"/>
<translation>Неправильні параметри визову завдання обробки.</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="104"/>
<source>External command failed to finish</source>
<translation type="unfinished"/>
<translation>Не вдалося завершити зовнішню команду</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="105"/>
<source>Command %1 failed to finish in %2s.
Output:
%3</source>
<translation type="unfinished"/>
<translation>Не вдалося завершити зовнішню команду %1 протягом %2с.
Вивід:
%3</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="111"/>
<source>External command finished with errors</source>
<translation type="unfinished"/>
<translation>Зовнішня програма завершилася з помилками</translation>
</message>
<message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="112"/>
<source>Command %1 finished with exit code %2.
Output:
%3</source>
<translation type="unfinished"/>
<translation>Команда %1 завершилася з кодом %2.
Вивід:
%3</translation>
</message>
</context>
<context>
@ -184,32 +190,32 @@ Output:
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="265"/>
<source>Running %1 operation.</source>
<translation type="unfinished"/>
<translation>Запуск операції %1.</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="280"/>
<source>Bad working directory path</source>
<translation type="unfinished"/>
<translation>Неправильний шлях робочого каталогу</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="281"/>
<source>Working directory %1 for python job %2 is not readable.</source>
<translation type="unfinished"/>
<translation>Неможливо прочитати робочу директорію %1 для завдання python %2.</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="291"/>
<source>Bad main script file</source>
<translation type="unfinished"/>
<translation>Неправильний файл головного сценарію</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="292"/>
<source>Main script file %1 for python job %2 is not readable.</source>
<translation type="unfinished"/>
<translation>Неможливо прочитати файл головного сценарію %1 для завдання python %2.</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonJob.cpp" line="368"/>
<source>Boost.Python error in job &quot;%1&quot;.</source>
<translation type="unfinished"/>
<translation>Помилка Boost.Python у завданні &quot;%1&quot;.</translation>
</message>
</context>
<context>
@ -217,90 +223,91 @@ Output:
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/>
<source>&amp;Back</source>
<translation type="unfinished"/>
<translation>&amp;Назад</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/>
<source>&amp;Next</source>
<translation type="unfinished"/>
<translation>&amp;Вперед</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="300"/>
<source>&amp;Cancel</source>
<translation type="unfinished"/>
<translation>&amp;Скасувати</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/>
<source>Cancel installation without changing the system.</source>
<translation type="unfinished"/>
<translation>Скасувати встановлення без змінення системи.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/>
<source>Cancel installation?</source>
<translation type="unfinished"/>
<translation>Скасувати встановлення?</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="100"/>
<source>Do you really want to cancel the current install process?
The installer will quit and all changes will be lost.</source>
<translation type="unfinished"/>
<translation>Чи ви насправді бажаєте скасувати процес встановлення?
Установник закриється і всі зміни буде втрачено.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="105"/>
<source>&amp;Yes</source>
<translation type="unfinished"/>
<translation>&amp;Так</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="106"/>
<source>&amp;No</source>
<translation type="unfinished"/>
<translation>&amp;Ні</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="183"/>
<source>&amp;Close</source>
<translation type="unfinished"/>
<translation>&amp;Закрити</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="233"/>
<source>Continue with setup?</source>
<translation type="unfinished"/>
<translation>Продовжити встановлення?</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="234"/>
<source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source>
<translation type="unfinished"/>
<translation>Установник %1 збирається зробити зміни на вашому диску, щоб встановити %2.&lt;br/&gt;&lt;strong&gt;Ці зміни неможливо буде повернути.&lt;/strong&gt;</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/>
<source>&amp;Install now</source>
<translation type="unfinished"/>
<translation>&amp;Встановити зараз</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="240"/>
<source>Go &amp;back</source>
<translation type="unfinished"/>
<translation>Перейти &amp;назад</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="269"/>
<source>&amp;Done</source>
<translation type="unfinished"/>
<translation>&amp;Закінчити</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/>
<source>The installation is complete. Close the installer.</source>
<translation type="unfinished"/>
<translation>Встановлення виконано. Закрити установник.</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>Error</source>
<translation type="unfinished"/>
<translation>Помилка</translation>
</message>
<message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="181"/>
<source>Installation Failed</source>
<translation type="unfinished"/>
<translation>Втановлення завершилося невдачею</translation>
</message>
</context>
<context>
@ -308,22 +315,22 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="263"/>
<source>Unknown exception type</source>
<translation type="unfinished"/>
<translation>Невідомий тип виключної ситуації</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="276"/>
<source>unparseable Python error</source>
<translation type="unfinished"/>
<translation>нерозбірлива помилка Python</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="292"/>
<source>unparseable Python traceback</source>
<translation type="unfinished"/>
<translation>нерозбірливе відстеження помилки Python</translation>
</message>
<message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="296"/>
<source>Unfetchable Python error.</source>
<translation type="unfinished"/>
<translation>Помилка Python, інформацію про яку неможливо отримати.</translation>
</message>
</context>
<context>
@ -336,7 +343,7 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="112"/>
<source>Show debug information</source>
<translation type="unfinished"/>
<translation>Показати відлагоджувальну інформацію</translation>
</message>
</context>
<context>
@ -344,12 +351,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="39"/>
<source>Checking file system on partition %1.</source>
<translation type="unfinished"/>
<translation>Перевірка файлової системи на розділі %1.</translation>
</message>
<message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="77"/>
<source>The file system check on partition %1 failed.</source>
<translation type="unfinished"/>
<translation>Перевірка файлової системи на розділі %1 завершилася невдачею.</translation>
</message>
</context>
<context>

View File

@ -2225,12 +2225,12 @@ The installer will quit and all changes will be lost.</source>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>

View File

@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-28 10:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: pavelrz <pavel@rzehak.cz>, 2017\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2017\n"
"Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -21,23 +21,23 @@ msgstr ""
#: src/modules/packages/main.py:59
#, python-format
msgid "Processing packages (%(count)d / %(total)d)"
msgstr ""
msgstr "Zpracovávání balíčků (%(count)d / %(total)d)"
#: src/modules/packages/main.py:61
#, python-format
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[0] "Je instalován jeden balíček."
msgstr[1] "Jsou instalovány %(num)d balíčky."
msgstr[2] "Je instalováno %(num)d balíčků."
#: src/modules/packages/main.py:64
#, python-format
msgid "Removing one package."
msgid_plural "Removing %(num)d packages."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[0] "Odebírá se jeden balíček."
msgstr[1] "Odebírají se %(num)d balíčky."
msgstr[2] "Odebírá se %(num)d balíčků."
#: src/modules/packages/main.py:68
msgid "Install packages."
@ -53,4 +53,4 @@ msgstr "Testovací krok {} python."
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr "Vytvořit machine-id."
msgstr "Vytvořit identifikátor stroje."

Binary file not shown.

View File

@ -28,7 +28,7 @@ msgstr "Forarbejder pakker (%(count)d / %(total)d)"
msgid "Installing one package."
msgid_plural "Installing %(num)d packages."
msgstr[0] "Installerer én pakke."
msgstr[1] "Installer %(num)d pakker."
msgstr[1] "Installerer %(num)d pakker."
#: src/modules/packages/main.py:64
#, python-format

Binary file not shown.

View File

@ -10,6 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-28 10:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Paul Combal <abonnementspaul@gmail.com>, 2017\n"
"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -20,7 +21,7 @@ msgstr ""
#: src/modules/packages/main.py:59
#, python-format
msgid "Processing packages (%(count)d / %(total)d)"
msgstr ""
msgstr "Traitement des paquets (%(count)d / %(total)d)"
#: src/modules/packages/main.py:61
#, python-format
@ -38,7 +39,7 @@ msgstr[1] ""
#: src/modules/packages/main.py:68
msgid "Install packages."
msgstr ""
msgstr "Installer des paquets."
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
@ -50,4 +51,4 @@ msgstr ""
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr ""
msgstr "Générer un machine-id."

Binary file not shown.

View File

@ -10,6 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-28 10:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Tyler Moss <inactive+lazerbeta@transifex.com>, 2017\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -38,7 +39,7 @@ msgstr[1] ""
#: src/modules/packages/main.py:68
msgid "Install packages."
msgstr ""
msgstr "Installer pakker."
#: src/modules/dummypython/main.py:44
msgid "Dummy python job."
@ -50,4 +51,4 @@ msgstr ""
#: src/modules/machineid/main.py:35
msgid "Generate machine-id."
msgstr ""
msgstr "Generer maskin-ID."

View File

@ -8,10 +8,17 @@ componentName: default
# same distribution.
welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size?
welcomeExpandingLogo: true
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
#
# The four Url strings are the Urls used by the buttons in
# the welcome screen, and are not shown to the user. Clicking
# on the "Support" button, for instance, opens the link supportUrl.
# If a Url is empty, the corresponding button is not shown.
#
# bootloaderEntryName is how this installation / distro is named
# in the boot loader (e.g. in the GRUB menu).
strings:
productName: Generic GNU/Linux
shortProductName: Generic
@ -25,11 +32,33 @@ strings:
knownIssuesUrl: http://calamares.io/about/
releaseNotesUrl: http://calamares.io/about/
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
# These images are loaded from the branding module directory.
#
# productIcon is used as the window icon, and will (usually) be used
# by the window manager to represent the application. This image
# should be square, and may be displayed by the window manager
# as small as 16x16 (but possibly larger).
# productLogo is used as the logo at the top of the left-hand column
# which shows the steps to be taken. The image should be square,
# and is displayed at 80x80 pixels (also on HiDPI).
# productWelcome is shown on the welcome page of the application in
# the middle of the window, below the welcome text. It can be
# any size and proportion, and will be scaled to fit inside
# the window. Use `welcomeExpandingLogo` to make it non-scaled.
# Recommended size is 320x150.
images:
productLogo: "squid.png"
productIcon: "squid.png"
productWelcome: "languages.png"
# The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things).
slideshow: "show.qml"
# Colors for text and background components.

View File

@ -96,7 +96,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
logoLabel->setAlignment( Qt::AlignCenter );
logoLabel->setFixedSize( 80, 80 );
logoLabel->setPixmap( Calamares::Branding::instance()->
image( Calamares::Branding::ProductIcon,
image( Calamares::Branding::ProductLogo,
logoLabel->size() ) );
logoLayout->addWidget( logoLabel );
logoLayout->addStretch();

View File

@ -46,7 +46,7 @@ public:
#endif
}
void setJobs( const QList< job_ptr >& jobs )
void setJobs( const JobList& jobs )
{
m_jobs = jobs;
}
@ -73,7 +73,7 @@ public:
}
private:
QList< job_ptr > m_jobs;
JobList m_jobs;
JobQueue* m_queue;
int m_jobIndex;
@ -164,7 +164,7 @@ JobQueue::enqueue( const job_ptr& job )
void
JobQueue::enqueue( const QList< job_ptr >& jobs )
JobQueue::enqueue( const JobList& jobs )
{
Q_ASSERT( !m_thread->isRunning() );
m_jobs.append( jobs );

View File

@ -42,11 +42,11 @@ public:
GlobalStorage* globalStorage() const;
void enqueue( const job_ptr& job );
void enqueue( const QList< job_ptr >& jobs );
void enqueue( const JobList& jobs );
void start();
signals:
void queueChanged( const QList< job_ptr >& jobs );
void queueChanged( const JobList& jobs );
void progress( qreal percent, const QString& prettyName );
void finished();
void failed( const QString& message, const QString& details );
@ -54,7 +54,7 @@ signals:
private:
static JobQueue* s_instance;
QList< job_ptr > m_jobs;
JobList m_jobs;
JobThread* m_thread;
GlobalStorage* m_storage;
};

View File

@ -19,6 +19,7 @@
#ifndef TYPEDEFS_H
#define TYPEDEFS_H
#include <QList>
#include <QSharedPointer>
namespace Calamares
@ -26,6 +27,7 @@ namespace Calamares
class Job;
typedef QSharedPointer< Job > job_ptr;
using JobList = QList< job_ptr >;
enum ModuleAction : char
{

View File

@ -326,5 +326,35 @@ crash()
*a = 1;
}
bool
getBool( const QVariantMap& map, const QString& key, bool d )
{
bool result = d;
if ( map.contains( key ) )
{
auto v = map.value( key );
if ( v.type() == QVariant::Bool )
result = v.toBool();
}
return result;
}
QVariantMap
getSubMap( const QVariantMap& map, const QString& key, bool& success )
{
success = false;
if ( map.contains( key ) )
{
auto v = map.value( key );
if ( v.type() == QVariant::Map )
{
success = true;
return v.toMap();
}
}
return QVariantMap();
}
}

View File

@ -97,6 +97,22 @@ namespace CalamaresUtils
* @brief crash makes Calamares crash immediately.
*/
DLLEXPORT void crash();
/**
* Get a bool value from a mapping with a given key; returns the default
* if no value is stored in the map.
*/
DLLEXPORT bool getBool( const QVariantMap& map, const QString& key, bool d );
/**
* Returns a sub-map (i.e. a nested map) from the given mapping with the
* given key. @p success is set to true if the @p key exists
* in @p map and converts to a map, false otherwise.
*
* Returns an empty map if there is no such key or it is not a map-value.
* (e.g. if @p success is false).
*/
DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success );
}
#endif // CALAMARESUTILS_H

View File

@ -72,9 +72,10 @@ calamares_add_library( calamaresui
EXPORT_MACRO UIDLLEXPORT_PRO
LINK_PRIVATE_LIBRARIES
${YAMLCPP_LIBRARY}
${OPTIONAL_PRIVATE_LIBRARIES}
LINK_LIBRARIES
Qt5::Svg
Qt5::QuickWidgets
${OPTIONAL_PRIVATE_LIBRARIES}
RESOURCES libcalamaresui.qrc
EXPORT CalamaresLibraryDepends
VERSION ${CALAMARES_VERSION_SHORT}

View File

@ -148,10 +148,10 @@ ExecutionViewStep::onActivate()
}
QList< Calamares::job_ptr >
JobList
ExecutionViewStep::jobs() const
{
return QList< Calamares::job_ptr >();
return JobList();
}

View File

@ -52,7 +52,7 @@ public:
void onActivate() override;
QList< job_ptr > jobs() const override;
JobList jobs() const override;
void appendJobModuleInstanceKey( const QString& instanceKey );

View File

@ -75,10 +75,10 @@ CppJobModule::loadSelf()
}
QList< job_ptr >
JobList
CppJobModule::jobs() const
{
return QList< job_ptr >() << m_job;
return JobList() << m_job;
}

View File

@ -36,7 +36,7 @@ public:
Interface interface() const override;
void loadSelf() override;
QList< job_ptr > jobs() const override;
JobList jobs() const override;
protected:
void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -70,7 +70,6 @@ public:
ProcessInterface,
PythonQtInterface
};
virtual ~Module();
/**
* @brief fromDescriptor creates a new Module object of the correct type.
@ -84,6 +83,7 @@ public:
const QString& instanceId,
const QString& configFileName,
const QString& moduleDirectory );
virtual ~Module();
/**
* @brief name returns the name of this module.
@ -159,7 +159,7 @@ public:
* @brief jobs returns any jobs exposed by this module.
* @return a list of jobs (can be empty).
*/
virtual QList< job_ptr > jobs() const = 0;
virtual JobList jobs() const = 0;
/**
* @brief configurationMap returns the contents of the configuration file for

View File

@ -53,10 +53,10 @@ ProcessJobModule::loadSelf()
}
QList< job_ptr >
JobList
ProcessJobModule::jobs() const
{
return QList< job_ptr >() << m_job;
return JobList() << m_job;
}

View File

@ -34,7 +34,7 @@ public:
Interface interface() const override;
void loadSelf() override;
QList< job_ptr > jobs() const override;
JobList jobs() const override;
protected:
void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -53,10 +53,10 @@ PythonJobModule::loadSelf()
}
QList< job_ptr >
JobList
PythonJobModule::jobs() const
{
return QList< job_ptr >() << m_job;
return JobList() << m_job;
}

View File

@ -32,7 +32,7 @@ public:
Interface interface() const override;
void loadSelf() override;
QList< job_ptr > jobs() const override;
JobList jobs() const override;
protected:
void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -171,7 +171,7 @@ PythonQtViewModule::loadSelf()
}
QList< job_ptr >
JobList
PythonQtViewModule::jobs() const
{
return m_viewStep->jobs();

View File

@ -33,7 +33,7 @@ public:
Interface interface() const override;
void loadSelf() override;
QList< job_ptr > jobs() const override;
JobList jobs() const override;
protected:
void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -76,7 +76,7 @@ ViewModule::loadSelf()
}
QList< job_ptr >
JobList
ViewModule::jobs() const
{
return m_viewStep->jobs();

View File

@ -37,7 +37,7 @@ public:
Interface interface() const override;
void loadSelf() override;
QList< job_ptr > jobs() const override;
JobList jobs() const override;
protected:
void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -62,7 +62,7 @@ DebugWindow::DebugWindow()
// JobQueue page
jobQueueText->setReadOnly( true );
connect( JobQueue::instance(), &JobQueue::queueChanged,
this, [ this ]( const QList< Calamares::job_ptr >& jobs )
this, [ this ]( const JobList& jobs )
{
QStringList text;
for ( const auto &job : jobs )

View File

@ -26,11 +26,9 @@
#include "qjsonitem.h"
QJsonTreeItem::QJsonTreeItem(QJsonTreeItem *parent)
: mParent( parent )
, mType( QJsonValue::Type::Null )
{
mParent = parent;
}
QJsonTreeItem::~QJsonTreeItem()

View File

@ -33,14 +33,19 @@
QJsonModel::QJsonModel(QObject *parent) :
QAbstractItemModel(parent)
, mRootItem( new QJsonTreeItem )
{
mRootItem = new QJsonTreeItem;
mHeaders.append("key");
mHeaders.append("value");
}
QJsonModel::~QJsonModel()
{
delete mRootItem;
}
bool QJsonModel::load(const QString &fileName)
{
QFile file(fileName);
@ -66,6 +71,7 @@ bool QJsonModel::loadJson(const QByteArray &json)
if (!mDocument.isNull())
{
beginResetModel();
delete mRootItem;
if (mDocument.isArray()) {
mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.array()));
} else {

View File

@ -17,6 +17,7 @@ class QJsonModel : public QAbstractItemModel
Q_OBJECT
public:
explicit QJsonModel(QObject *parent = 0);
~QJsonModel();
bool load(const QString& fileName);
bool load(QIODevice * device);
bool loadJson(const QByteArray& json);

View File

@ -159,10 +159,10 @@ PythonQtViewStep::isAtEnd() const
}
QList< Calamares::job_ptr >
JobList
PythonQtViewStep::jobs() const
{
QList< Calamares::job_ptr > jobs;
JobList jobs;
PythonQtObjectPtr jobsCallable = PythonQt::self()->lookupCallable( m_obj, "jobs" );
if ( jobsCallable.isNull() )

View File

@ -46,7 +46,7 @@ public:
bool isAtBeginning() const override;
bool isAtEnd() const override;
QList< Calamares::job_ptr > jobs() const override;
JobList jobs() const override;
void setConfigurationMap( const QVariantMap& configurationMap ) override;

View File

@ -91,7 +91,7 @@ public:
*/
virtual void onLeave();
virtual QList< job_ptr > jobs() const = 0;
virtual JobList jobs() const = 0;
void setModuleInstanceKey( const QString& instanceKey );
QString moduleInstanceKey() const

View File

@ -1,5 +1,11 @@
include( CMakeColors )
if( BUILD_TESTING )
add_executable( test_conf test_conf.cpp )
target_link_libraries( test_conf ${YAMLCPP_LIBRARY} )
target_include_directories( test_conf PUBLIC ${YAMLCPP_INCLUDE_DIR} )
endif()
file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" )
string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" )
foreach( SUBDIRECTORY ${SUBDIRECTORIES} )

View File

@ -8,11 +8,12 @@
# Copyright 2014, Daniel Hillenbrand <codeworkx@bbqlinux.org>
# Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr>
# Copyright 2014, Kevin Kofler <kevin.kofler@chello.at>
# Copyright 2015, Philip Mueller <philm@manjaro.org>
# Copyright 2015-2017, Philip Mueller <philm@manjaro.org>
# Copyright 2016-2017, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Adriaan de Groot <groot@kde.org>
# Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
# Copyright 2017, Ben Green <Bezzy1999@hotmail.com>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -235,10 +236,18 @@ def install_grub(efi_directory, fw_type):
# 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"
bitness_translate = {"32": "--target=i386-efi",
"64": "--target=x86_64-efi"}
if efi_bitness == "32":
efi_target = "i386-efi"
efi_grub_file = "grubia32.efi"
efi_boot_file = "bootia32.efi"
elif efi_bitness == "64":
efi_target = "x86_64-efi"
efi_grub_file = "grubx64.efi"
efi_boot_file = "bootx64.efi"
check_target_env_call([libcalamares.job.configuration["grubInstall"],
bitness_translate[efi_bitness],
"--target=" + efi_target,
"--efi-directory=" + efi_directory,
"--bootloader-id=" + efi_bootloader_id,
"--force"])
@ -260,13 +269,13 @@ def install_grub(efi_directory, fw_type):
os.makedirs(install_efi_boot_directory)
# Workaround for some UEFI firmwares
efi_file_source = {"32": os.path.join(install_efi_directory_firmware,
efi_file_source = os.path.join(install_efi_directory_firmware,
efi_bootloader_id,
"grubia32.efi"),
"64": os.path.join(install_efi_directory_firmware,
efi_bootloader_id,
"grubx64.efi")}
shutil.copy2(efi_file_source[efi_bitness], install_efi_boot_directory)
efi_grub_file)
efi_file_target = os.path.join(install_efi_boot_directory,
efi_boot_file)
shutil.copy2(efi_file_source, efi_file_target)
else:
print("Bootloader: grub (bios)")
if libcalamares.globalstorage.value("bootLoader") is None:

View File

@ -8,7 +8,7 @@ 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: 2017-09-28 10:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: pavelrz <pavel@rzehak.cz>, 2016\n"
"Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n"
@ -20,7 +20,7 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84
msgid "Click me!"
msgstr "Klikni na mě!"
msgstr "Klikněte na mě!"
#: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel."
@ -36,7 +36,7 @@ msgstr "Testovací úloha PythonQt"
#: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr "Toto je testovací úloha PythonQt. Testovací úloha říká: {}"
msgstr "Toto je testovací úloha PythonQt. Testovací úloha sděluje: {}"
#: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job."

View File

@ -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: 2017-09-28 10:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Paul Combal <abonnementspaul@gmail.com>, 2017\n"
"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,11 +20,11 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84
msgid "Click me!"
msgstr ""
msgstr "Cliquez-moi!"
#: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel."
msgstr ""
msgstr "Un nouveau QLabel."
#: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep"

View File

@ -178,7 +178,7 @@ FinishedViewStep::setConfigurationMap( const QVariantMap& configurationMap )
configurationMap.value( "restartNowCommand" ).type() == QVariant::String )
m_widget->setRestartNowCommand( configurationMap.value( "restartNowCommand" ).toString() );
else
m_widget->setRestartNowCommand( "systemctl -i reboot" );
m_widget->setRestartNowCommand( "shutdown -r now" );
}
}
if ( configurationMap.contains( "notifyOnFinished" ) &&

View File

@ -1,14 +1,18 @@
Configuration for the "finished" page, which is usually shown only at
the end of the installation (successful or not).
# Configuration for the "finished" page, which is usually shown only at
# the end of the installation (successful or not).
---
# The finished page can hold a "restart system now" checkbox.
# If this is false, no checkbox is show and the system is not restarted
# If this is false, no checkbox is shown and the system is not restarted
# when Calamares exits.
restartNowEnabled: true
# Initial state of the checkbox "restart now".
# Initial state of the checkbox "restart now". Only relevant when the
# checkbox is shown by restartNowEnabled.
restartNowChecked: false
# If the checkbox is shown, and the checkbox is checked, then when
# Calamares exits from the finished-page it will run this command.
# If not set, falls back to "shutdown -r now".
restartNowCommand: "systemctl -i reboot"
# When the last page is (successfully) reached, send a DBus notification

View File

@ -24,6 +24,8 @@
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
import libcalamares
import inspect
import os
import shutil

View File

@ -21,6 +21,7 @@ calamares_add_plugin( interactiveterminal
InteractiveTerminalPage.cpp
LINK_PRIVATE_LIBRARIES
calamaresui
LINK_LIBRARIES
KF5::Service
KF5::Parts
SHARED_LIB

View File

@ -1,3 +1,5 @@
# NOTE: you must have ckbcomp installed and runnable
# on the live system, for keyboard layout previews.
---
# The name of the file to write X11 keyboard settings to
# The default value is the name used by upstream systemd-localed.

View File

@ -20,6 +20,7 @@
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "utils/Logger.h"
#include "keyboardpreview.h"
KeyBoardPreview::KeyBoardPreview( QWidget* parent )
@ -113,10 +114,16 @@ bool KeyBoardPreview::loadCodes() {
process.setEnvironment(QStringList() << "LANG=C" << "LC_MESSAGES=C");
process.start("ckbcomp", param);
if (!process.waitForStarted())
{
cDebug() << "WARNING: ckbcomp not found , keyboard preview disabled";
return false;
}
if (!process.waitForFinished())
{
cDebug() << "WARNING: ckbcomp failed, keyboard preview disabled";
return false;
}
// Clear codes
codes.clear();

View File

@ -120,7 +120,7 @@ LocaleViewStep::fetchGeoIpTimezone()
try
{
YAML::Node doc = YAML::Load( reply->readAll() );
YAML::Node doc = YAML::Load( data );
QVariant var = CalamaresUtils::yamlToVariant( doc );
if ( !var.isNull() &&

View File

@ -1,7 +1,27 @@
---
# This settings are used to set your default system time zone.
# Time zones are usually located under /usr/share/zoneinfo and
# provided by the 'tzdata' package of your Distribution.
#
# Distributions using systemd can list available
# time zones by using the timedatectl command.
# timedatectl list-timezones
region: "America"
zone: "New_York"
# GeoIP settings. Leave commented out to disable GeoIP.
#localeGenPath: "/etc/locale.gen"
# System locales are detected in the following order:
#
# /usr/share/i18n/SUPPORTED
# localeGenPath (defaults to /etc/locale.gen if not set)
# 'locale -a' output
# Enable only when your Distribution is using an
# custom path for locale.gen
#localeGenPath: "PATH_TO/locale.gen"
# GeoIP based Language settings:
# GeoIP need an working Internet connecion.
# This can be managed from welcome.conf by adding
# internet to the list of required conditions.
# Leave commented out to disable GeoIP.
#geoipUrl: "freegeoip.net"

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Originally from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org>
@ -20,8 +21,12 @@
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include <cmath>
#include "timezonewidget.h"
constexpr double MATH_PI = 3.14159265;
TimeZoneWidget::TimeZoneWidget( QWidget* parent ) :
QWidget( parent )
{
@ -47,15 +52,18 @@ TimeZoneWidget::TimeZoneWidget(QWidget* parent) :
}
void TimeZoneWidget::setCurrentLocation(QString region, QString zone) {
void TimeZoneWidget::setCurrentLocation( QString region, QString zone )
{
QHash<QString, QList<LocaleGlobal::Location> > hash = LocaleGlobal::getLocations();
if ( !hash.contains( region ) )
return;
QList<LocaleGlobal::Location> locations = hash.value( region );
for (int i = 0; i < locations.size(); ++i) {
if (locations.at(i).zone == zone) {
for ( int i = 0; i < locations.size(); ++i )
{
if ( locations.at( i ).zone == zone )
{
setCurrentLocation( locations.at( i ) );
break;
}
@ -63,18 +71,20 @@ void TimeZoneWidget::setCurrentLocation(QString region, QString zone) {
}
void TimeZoneWidget::setCurrentLocation(LocaleGlobal::Location location) {
void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location )
{
currentLocation = location;
// Set zone
QPoint pos = getLocationPosition( currentLocation.longitude, currentLocation.latitude );
for (int i = 0; i < timeZoneImages.size(); ++i) {
for ( int i = 0; i < timeZoneImages.size(); ++i )
{
QImage zone = timeZoneImages[i];
// If not transparent set as current
if (zone.pixel(pos) != RGB_TRANSPARENT) {
if ( zone.pixel( pos ) != RGB_TRANSPARENT )
{
currentZoneImage = zone;
break;
}
@ -91,13 +101,25 @@ void TimeZoneWidget::setCurrentLocation(LocaleGlobal::Location location) {
//###
QPoint TimeZoneWidget::getLocationPosition(double longitude, double latitude) {
QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude )
{
const int width = this->width();
const int height = this->height();
double x = ( width / 2.0 + ( width / 2.0 ) * longitude / 180.0 ) + MAP_X_OFFSET * width;
double y = ( height / 2.0 - ( height / 2.0 ) * latitude / 90.0 ) + MAP_Y_OFFSET * height;
//Far north, the MAP_Y_OFFSET no longer holds, cancel the Y offset; it's noticeable
// from 62 degrees north, so scale those 28 degrees as if the world is flat south
// of there, and we have a funny "rounded" top of the world. In practice the locations
// of the different cities / regions looks ok -- at least Thule ends up in the right
// country, and Inuvik isn't in the ocean.
if ( latitude > 62.0 )
y -= sin( MATH_PI * ( latitude - 62.0 ) / 56.0 ) * MAP_Y_OFFSET * height;
// Antarctica isn't shown on the map, but you could try clicking there
if ( latitude < -60 )
y = height - 1;
if ( x < 0 )
x = width+x;
if ( x >= width )
@ -111,8 +133,8 @@ QPoint TimeZoneWidget::getLocationPosition(double longitude, double latitude) {
}
void TimeZoneWidget::paintEvent(QPaintEvent*) {
void TimeZoneWidget::paintEvent( QPaintEvent* )
{
const int width = this->width();
const int height = this->height();
QFontMetrics fontMetrics( font );
@ -157,7 +179,8 @@ void TimeZoneWidget::paintEvent(QPaintEvent*) {
void TimeZoneWidget::mousePressEvent(QMouseEvent* event) {
void TimeZoneWidget::mousePressEvent( QMouseEvent* event )
{
if ( event->button() != Qt::LeftButton )
return;
@ -167,14 +190,17 @@ void TimeZoneWidget::mousePressEvent(QMouseEvent* event) {
QHash<QString, QList<LocaleGlobal::Location> > hash = LocaleGlobal::getLocations();
QHash<QString, QList<LocaleGlobal::Location> >::iterator iter = hash.begin();
while (iter != hash.end()) {
while ( iter != hash.end() )
{
QList<LocaleGlobal::Location> locations = iter.value();
for (int i = 0; i < locations.size(); ++i) {
for ( int i = 0; i < locations.size(); ++i )
{
LocaleGlobal::Location loc = locations[i];
QPoint locPos = getLocationPosition( loc.longitude, loc.latitude );
if ((abs(mX - locPos.x()) + abs(mY - locPos.y()) < abs(mX - nX) + abs(mY - nY))) {
if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) < abs( mX - nX ) + abs( mY - nY ) ) )
{
currentLocation = loc;
nX = locPos.x();
nY = locPos.y();

View File

@ -50,7 +50,10 @@ class TimeZoneWidget : public QWidget
public:
explicit TimeZoneWidget( QWidget* parent = nullptr );
LocaleGlobal::Location getCurrentLocation() { return currentLocation; }
LocaleGlobal::Location getCurrentLocation()
{
return currentLocation;
}
void setCurrentLocation( QString region, QString zone );
void setCurrentLocation( LocaleGlobal::Location location );
@ -63,6 +66,10 @@ private:
QList<QImage> timeZoneImages;
LocaleGlobal::Location currentLocation;
QPoint getLocationPosition( const LocaleGlobal::Location& l )
{
return getLocationPosition( l.longitude, l.latitude );
}
QPoint getLocationPosition( double longitude, double latitude );
void paintEvent( QPaintEvent* event );

View File

@ -3,6 +3,7 @@
* Copyright 2016, Lisa Vitolo <shainer@chakraos.org>
* Copyright 2017, Kyle Robbertze <krobbertze@gmail.com>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
* Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -56,14 +57,6 @@ NetInstallPage::NetInstallPage( QWidget* parent )
ui->setupUi( this );
}
bool
NetInstallPage::isReady()
{
// nothing to wait for, the data are immediately ready
// if the user does not select any group nothing is installed
return true;
}
bool
NetInstallPage::readGroups( const QByteArray& yamlData )
{
@ -77,7 +70,7 @@ NetInstallPage::readGroups( const QByteArray& yamlData )
m_groups = new PackageModel( groups );
CALAMARES_RETRANSLATE(
m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Name" ) );
m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Description" ) ); )
m_groups->setHeaderData( 1, Qt::Horizontal, tr( "Description" ) ); )
return true;
}
@ -91,18 +84,22 @@ NetInstallPage::readGroups( const QByteArray& yamlData )
void
NetInstallPage::dataIsHere( QNetworkReply* reply )
{
// If m_required is *false* then we still say we're ready
// even if the reply is corrupt or missing.
if ( reply->error() != QNetworkReply::NoError )
{
cDebug() << reply->errorString();
ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) );
emit checkReady( !m_required );
return;
}
if ( !readGroups( reply->readAll() ) )
{
cDebug() << "Netinstall groups data was received, but invalid.";
ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) );
ui->netinst_status->setText( tr( "Network Installation. (Disabled: Received invalid groups data)" ) );
reply->deleteLater();
emit checkReady( !m_required );
return;
}
@ -111,15 +108,23 @@ NetInstallPage::dataIsHere( QNetworkReply* reply )
ui->groupswidget->header()->setSectionResizeMode( 1, QHeaderView::Stretch );
reply->deleteLater();
emit checkReady( isReady() );
emit checkReady( true );
}
QList<PackageTreeItem::ItemData> NetInstallPage::selectedPackages() const
PackageModel::PackageItemDataList
NetInstallPage::selectedPackages() const
{
if ( m_groups )
return m_groups->getPackages();
else
{
cDebug() << "WARNING: no netinstall groups are available.";
return PackageModel::PackageItemDataList();
}
}
void NetInstallPage::loadGroupList()
void
NetInstallPage::loadGroupList()
{
QString confUrl(
Calamares::JobQueue::instance()->globalStorage()->value(
@ -138,7 +143,15 @@ void NetInstallPage::loadGroupList()
m_networkManager.get( request );
}
void NetInstallPage::onActivate()
void
NetInstallPage::setRequired( bool b )
{
m_required = b;
}
void
NetInstallPage::onActivate()
{
ui->groupswidget->setFocus();
}

View File

@ -46,17 +46,24 @@ public:
void onActivate();
bool isReady();
// Retrieves the groups, with name, description and packages, from
// the remote URL configured in the settings. Assumes the URL is already
// in the global storage. This should be called before displaying the page.
void loadGroupList();
// Sets the "required" state of netinstall data. Influences whether
// corrupt or unavailable data causes checkReady() to be emitted
// true (not-required) or false.
void setRequired( bool );
bool getRequired() const
{
return m_required;
}
// Returns the list of packages belonging to groups that are
// selected in the view in this given moment. No data is cached here, so
// this function does not have constant time.
QList<PackageTreeItem::ItemData> selectedPackages() const;
PackageModel::PackageItemDataList selectedPackages() const;
public slots:
void dataIsHere( QNetworkReply* );
@ -76,6 +83,7 @@ private:
QNetworkAccessManager m_networkManager;
PackageModel* m_groups;
bool m_required;
};
#endif // NETINSTALLPAGE_H

View File

@ -2,6 +2,7 @@
* Copyright 2016, Luca Giambonini <almack@chakraos.org>
* Copyright 2016, Lisa Vitolo <shainer@chakraos.org>
* Copyright 2017, Kyle Robbertze <krobbertze@gmail.com>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* 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,11 +31,11 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( NetInstallViewStepFactory, registerPlugin<N
NetInstallViewStep::NetInstallViewStep( QObject* parent )
: Calamares::ViewStep( parent )
, m_widget( new NetInstallPage() )
, m_nextEnabled( true )
, m_nextEnabled( false )
{
emit nextStatusChanged( true );
connect( m_widget, &NetInstallPage::checkReady,
this, &NetInstallViewStep::nextStatusChanged );
this, &NetInstallViewStep::nextIsReady );
}
@ -126,18 +127,26 @@ NetInstallViewStep::onLeave()
cDebug() << "Leaving netinstall, adding packages to be installed"
<< "to global storage";
QMap<QString, QVariant> packagesWithOperation;
QList<PackageTreeItem::ItemData> packages = m_widget->selectedPackages();
PackageModel::PackageItemDataList packages = m_widget->selectedPackages();
QVariantList installPackages;
QVariantList tryInstallPackages;
cDebug() << "Processing";
QVariantList packageOperations;
cDebug() << "Processing" << packages.length() << "packages from netinstall.";
for ( auto package : packages )
{
QMap<QString, QVariant> details;
details.insert( "pre-script", package.preScript );
details.insert( "package", package.packageName );
details.insert( "post-script", package.postScript );
QVariant details( package.packageName );
// If it's a package with a pre- or post-script, replace
// with the more complicated datastructure.
if ( !package.preScript.isEmpty() || !package.postScript.isEmpty() )
{
QMap<QString, QVariant> sdetails;
sdetails.insert( "pre-script", package.preScript );
sdetails.insert( "package", package.packageName );
sdetails.insert( "post-script", package.postScript );
details = sdetails;
}
if ( package.isCritical )
installPackages.append( details );
else
@ -145,14 +154,24 @@ NetInstallViewStep::onLeave()
}
if ( !installPackages.empty() )
packagesWithOperation.insert( "install", QVariant( installPackages ) );
{
QMap<QString, QVariant> op;
op.insert( "install", QVariant( installPackages ) );
packageOperations.append( op );
cDebug() << " .." << installPackages.length() << "critical packages.";
}
if ( !tryInstallPackages.empty() )
packagesWithOperation.insert( "try_install", QVariant( tryInstallPackages ) );
{
QMap<QString, QVariant> op;
op.insert( "try_install", QVariant( tryInstallPackages ) );
packageOperations.append( op );
cDebug() << " .." << tryInstallPackages.length() << "non-critical packages.";
}
if ( !packagesWithOperation.isEmpty() )
if ( !packageOperations.isEmpty() )
{
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
gs->insert( "packageOperations", QVariant( packagesWithOperation ) );
gs->insert( "packageOperations", QVariant( packageOperations ) );
}
}
@ -160,6 +179,11 @@ NetInstallViewStep::onLeave()
void
NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{
m_widget->setRequired(
configurationMap.contains( "required" ) &&
configurationMap.value( "required" ).type() == QVariant::Bool &&
configurationMap.value( "required" ).toBool() );
if ( configurationMap.contains( "groupsUrl" ) &&
configurationMap.value( "groupsUrl" ).type() == QVariant::String )
{
@ -168,3 +192,10 @@ NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap )
m_widget->loadGroupList();
}
}
void
NetInstallViewStep::nextIsReady( bool b )
{
m_nextEnabled = b;
emit nextStatusChanged( b );
}

View File

@ -60,6 +60,9 @@ public:
void setConfigurationMap( const QVariantMap& configurationMap ) override;
public slots:
void nextIsReady( bool );
private:
NetInstallPage* m_widget;
bool m_nextEnabled;

View File

@ -1,3 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright (c) 2017, Kyle Robbertze <kyle@aims.ac.za>
@ -28,14 +29,13 @@
#include <yaml-cpp/yaml.h>
// Required forward declarations
class PackageTreeItem;
class PackageModel : public QAbstractItemModel
{
Q_OBJECT
public:
using PackageItemDataList = QList< PackageTreeItem::ItemData >;
explicit PackageModel( const YAML::Node& data, QObject* parent = nullptr );
~PackageModel() override;
@ -52,7 +52,7 @@ public:
QModelIndex parent( const QModelIndex& index ) const override;
int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
QList<PackageTreeItem::ItemData> getPackages() const;
PackageItemDataList getPackages() const;
QList<PackageTreeItem*> getItemPackages( PackageTreeItem* item ) const;
private:

View File

@ -6,6 +6,7 @@ At installation time, the user is presented with the choice to install groups of
Calamares will then invoke the correct backend to install the packages.
## Configuration of the packages
Every distribution can choose which groups to display and which packages should be in the groups.
The *netinstall.conf* file should have this format:
@ -48,6 +49,7 @@ If you set both *hidden* and *selected* for a group, you are basically creating
which will always be installed in the user's system.
## Configuration of the module
Here is the set of instructions to have the module work in your Calamares. As of July 2016, this has been successfully
tested using the live installation of Chakra Fermi.
@ -63,7 +65,8 @@ If not present, add the **packages** job in the **exec** list. This is the job t
to install packages. Make sure it is configured to use the correct package manager for your distribution; this
is configured in src/modules/packages/packages.conf.
The exec list should be:
The **exec** list in *settings.conf* should contain the following items in
order (it's ok for other jobs to be listed inbetween them, though):
- unpackfs
- networkcfg
@ -74,10 +77,10 @@ structure; **networkcfg** set ups a working network in the chroot; and finally *
in the chroot.
## Common issues
If launching the package manager command returns you negative exit statuses and nothing is actually invoked, this
is likely an error in the setup of the chroot; check that the parameter **rootMountPoint** is set to the correct
value in the Calamares configuration.
If the command is run, but exits with error, check that the network is working in the chroot. Make sure /etc/resolv.conf
exists and that it's not empty.

View File

@ -1,2 +1,13 @@
---
# This is the URL that is retrieved to get the netinstall groups-and-packages
# data (which should be in the format described in netinstall.yaml).
groupsUrl: http://chakraos.org/netinstall.php
# If the installation can proceed without netinstall (e.g. the Live CD
# can create a working installed system, but netinstall is preferred
# to bring it up-to-date or extend functionality) leave this set to
# false (the default). If set to true, the netinstall data is required.
#
# This only has an effect if the netinstall data cannot be retrieved,
# or is corrupt: having "required" set, means the install cannot proceed.
required: false

View File

@ -344,10 +344,18 @@ def subst_locale(plist):
def run_operations(pkgman, entry):
"""
Call package manager with given parameters.
Call package manager with suitable parameters for the given
package actions.
:param pkgman:
:param entry:
:param pkgman: PackageManager
This is the manager that does the actual work.
:param entry: dict
Keys are the actions -- e.g. "install" -- to take, and the values
are the (list of) packages to apply the action to. The actions are
not iterated in a specific order, so it is recommended to use only
one action per dictionary. The list of packages may be package
names (strings) or package information dictionaries with pre-
and post-scripts.
"""
global group_packages, completed_packages, mode_packages

View File

@ -6,7 +6,7 @@ include(GenerateExportHeader)
find_package( Qt5 REQUIRED DBus )
find_package( KF5 REQUIRED Config CoreAddons I18n WidgetsAddons )
find_package( KPMcore 3.2 REQUIRED )
find_package( KPMcore 3.3 REQUIRED )
include_directories( ${KPMCORE_INCLUDE_DIR} )
include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
@ -43,7 +43,6 @@ calamares_add_plugin( partition
gui/PrettyRadioButton.cpp
gui/ScanningDialog.cpp
gui/ReplaceWidget.cpp
jobs/CheckFileSystemJob.cpp
jobs/ClearMountsJob.cpp
jobs/ClearTempMountsJob.cpp
jobs/CreatePartitionJob.cpp
@ -51,7 +50,6 @@ calamares_add_plugin( partition
jobs/DeletePartitionJob.cpp
jobs/FillGlobalStorageJob.cpp
jobs/FormatPartitionJob.cpp
jobs/MoveFileSystemJob.cpp
jobs/PartitionJob.cpp
jobs/ResizePartitionJob.cpp
jobs/SetPartitionFlagsJob.cpp

View File

@ -43,6 +43,8 @@
#include <QDir>
#include <QListWidgetItem>
#include <QPushButton>
#include <QRegularExpression>
#include <QRegularExpressionValidator>
#include <QSet>
static QSet< FileSystem::Type > s_unmountableFS(
@ -66,6 +68,19 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par
m_ui->encryptWidget->setText( tr( "En&crypt" ) );
m_ui->encryptWidget->hide();
if (m_device->type() == Device::Disk_Device) {
m_ui->lvNameLabel->hide();
m_ui->lvNameLineEdit->hide();
}
if (m_device->type() == Device::LVM_Device) {
/* LVM logical volume name can consist of: letters numbers _ . - +
* It cannot start with underscore _ and must not be equal to . or .. or any entry in /dev/
* QLineEdit accepts QValidator::Intermediate, so we just disable . at the beginning */
QRegularExpression re(QStringLiteral(R"(^(?!_|\.)[\w\-.+]+)"));
QRegularExpressionValidator *validator = new QRegularExpressionValidator(re, this);
m_ui->lvNameLineEdit->setValidator(validator);
}
QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" };
if ( PartUtils::isEfiSystem() )
mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
@ -227,6 +242,10 @@ CreatePartitionDialog::createPartition()
);
}
if (m_device->type() == Device::LVM_Device) {
partition->setPartitionPath(m_device->deviceNode() + QStringLiteral("/") + m_ui->lvNameLineEdit->text().trimmed());
}
PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() );
PartitionInfo::setFormat( partition, true );

View File

@ -146,6 +146,16 @@
</spacer>
</item>
<item row="6" column="0">
<widget class="QLabel" name="lvNameLabel">
<property name="text">
<string>LVM LV name</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lvNameLineEdit"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mountPointLabel">
<property name="text">
<string>&amp;Mount Point:</string>
@ -155,7 +165,7 @@
</property>
</widget>
</item>
<item row="6" column="1">
<item row="7" column="1">
<widget class="QComboBox" name="mountPointComboBox">
<property name="editable">
<bool>true</bool>
@ -165,21 +175,21 @@
</property>
</widget>
</item>
<item row="7" column="1">
<item row="8" column="1">
<widget class="QLabel" name="labelMountPoint">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="0">
<item row="9" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Flags:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<item row="9" column="1">
<widget class="QListWidget" name="m_listFlags">
<property name="alternatingRowColors">
<bool>true</bool>
@ -192,7 +202,7 @@
</property>
</widget>
</item>
<item row="9" column="0">
<item row="10" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>

View File

@ -119,7 +119,7 @@ PartitionPage::~PartitionPage()
void
PartitionPage::updateButtons()
{
bool create = false, edit = false, del = false;
bool create = false, createTable = false, edit = false, del = false;
QModelIndex index = m_ui->partitionTreeView->currentIndex();
if ( index.isValid() )
@ -141,11 +141,18 @@ PartitionPage::updateButtons()
edit = !isFree && !isExtended;
del = !isFree;
}
if ( m_ui->deviceComboBox->currentIndex() >= 0 )
{
QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 );
if ( m_core->deviceModel()->deviceForIndex( deviceIndex )->type() != Device::LVM_Device )
createTable = true;
}
m_ui->createButton->setEnabled( create );
m_ui->editButton->setEnabled( edit );
m_ui->deleteButton->setEnabled( del );
m_ui->newPartitionTableButton->setEnabled( m_ui->deviceComboBox->currentIndex() >= 0 );
m_ui->newPartitionTableButton->setEnabled( createTable );
}
void

View File

@ -1,83 +0,0 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include "jobs/CheckFileSystemJob.h"
#include <utils/Logger.h>
// KPMcore
#include <kpmcore/core/partition.h>
#include <kpmcore/fs/filesystem.h>
#include <kpmcore/util/report.h>
#include <QThread>
CheckFileSystemJob::CheckFileSystemJob( Partition* partition )
: PartitionJob( partition )
{}
QString
CheckFileSystemJob::prettyName() const
{
QString path = partition()->partitionPath();
return tr( "Checking file system on partition %1." ).arg( path );
}
QString
CheckFileSystemJob::prettyStatusMessage() const
{
return prettyName();
}
Calamares::JobResult
CheckFileSystemJob::exec()
{
FileSystem& fs = partition()->fileSystem();
// if we cannot check, assume everything is fine
if ( fs.supportCheck() != FileSystem::cmdSupportFileSystem )
return Calamares::JobResult::ok();
Report report( nullptr );
bool ok = fs.check( report, partition()->partitionPath() );
int retries = 0;
const int MAX_RETRIES = 10;
while ( !ok )
{
cDebug() << "Partition" << partition()->partitionPath()
<< "might not be ready yet, retrying (" << ++retries
<< "/" << MAX_RETRIES << ") ...";
QThread::sleep( 2 /*seconds*/ );
ok = fs.check( report, partition()->partitionPath() );
if ( retries == MAX_RETRIES )
break;
}
if ( !ok )
return Calamares::JobResult::error(
tr( "The file system check on partition %1 failed." )
.arg( partition()->partitionPath() ),
report.toText()
);
return Calamares::JobResult::ok();
}

View File

@ -1,38 +0,0 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#ifndef CHECKFILESYSTEMJOB_H
#define CHECKFILESYSTEMJOB_H
#include <jobs/PartitionJob.h>
/**
* Runs a file system check on an existing partition.
*/
class CheckFileSystemJob : public PartitionJob
{
Q_OBJECT
public:
CheckFileSystemJob( Partition* partition );
QString prettyName() const override;
QString prettyStatusMessage() const override;
Calamares::JobResult exec() override;
};
#endif /* CHECKFILESYSTEMJOB_H */

View File

@ -24,15 +24,12 @@
#include "utils/Units.h"
// KPMcore
#include <kpmcore/backend/corebackend.h>
#include <kpmcore/backend/corebackendmanager.h>
#include <kpmcore/backend/corebackenddevice.h>
#include <kpmcore/backend/corebackendpartition.h>
#include <kpmcore/backend/corebackendpartitiontable.h>
#include <kpmcore/core/device.h>
#include <kpmcore/core/lvmdevice.h>
#include <kpmcore/core/partition.h>
#include <kpmcore/core/partitiontable.h>
#include <kpmcore/fs/filesystem.h>
#include <kpmcore/ops/newoperation.h>
#include <kpmcore/util/report.h>
// Qt
@ -78,68 +75,15 @@ CreatePartitionJob::prettyStatusMessage() const
Calamares::JobResult
CreatePartitionJob::exec()
{
int step = 0;
const qreal stepCount = 4;
Report report( nullptr );
NewOperation op(*m_device, m_partition);
op.setStatus(Operation::StatusRunning);
QString message = tr( "The installer failed to create partition on disk '%1'." ).arg( m_device->name() );
progress( step++ / stepCount );
CoreBackend* backend = CoreBackendManager::self()->backend();
QScopedPointer<CoreBackendDevice> backendDevice( backend->openDevice( m_device->deviceNode() ) );
if ( !backendDevice.data() )
{
return Calamares::JobResult::error(
message,
tr( "Could not open device '%1'." ).arg( m_device->deviceNode() )
);
}
progress( step++ / stepCount );
QScopedPointer<CoreBackendPartitionTable> backendPartitionTable( backendDevice->openPartitionTable() );
if ( !backendPartitionTable.data() )
{
return Calamares::JobResult::error(
message,
tr( "Could not open partition table." )
);
}
progress( step++ / stepCount );
QString partitionPath = backendPartitionTable->createPartition( report, *m_partition );
if ( partitionPath.isEmpty() )
{
return Calamares::JobResult::error(
message,
report.toText()
);
}
m_partition->setPartitionPath( partitionPath );
backendPartitionTable->commit();
progress( step++ / stepCount );
FileSystem& fs = m_partition->fileSystem();
if ( fs.type() == FileSystem::Unformatted || fs.type() == FileSystem::Extended )
if (op.execute(report))
return Calamares::JobResult::ok();
if ( !fs.create( report, partitionPath ) )
{
return Calamares::JobResult::error(
tr( "The installer failed to create file system on partition %1." ).arg( partitionPath ),
report.toText()
);
}
if ( !backendPartitionTable->setPartitionSystemType( report, *m_partition ) )
{
return Calamares::JobResult::error(
tr( "The installer failed to update partition table on disk '%1'." ).arg( m_device->name() ),
report.toText()
);
}
backendPartitionTable->commit();
return Calamares::JobResult::ok();
return Calamares::JobResult::error(message, report.toText());
}
void

View File

@ -26,7 +26,6 @@
#include <kpmcore/backend/corebackend.h>
#include <kpmcore/backend/corebackendmanager.h>
#include <kpmcore/backend/corebackenddevice.h>
#include <kpmcore/backend/corebackendpartition.h>
#include <kpmcore/backend/corebackendpartitiontable.h>
#include <kpmcore/core/device.h>
#include <kpmcore/core/partition.h>

Some files were not shown because too many files have changed in this diff Show More