Merge branch 'calamares' of https://github.com/calamares/calamares into development

This commit is contained in:
Philip Mueller 2023-09-11 07:22:30 +02:00
commit b272011b21
409 changed files with 58815 additions and 49919 deletions

View File

@ -8,20 +8,6 @@ jobs:
notify: notify:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: "notify: new"
if: github.event.issue.state == 'open'
uses: calamares/actions/matrix-notify@v4
with:
token: ${{ secrets.MATRIX_TOKEN }}
room: ${{ secrets.MATRIX_ROOM }}
message: "OPENED ${{ github.event.issue.html_url }} by ${{ github.actor }} ${{ github.event.issue.title }}"
- name: "notify: closed"
if: github.event.issue.state != 'open'
uses: calamares/actions/matrix-notify@v4
with:
token: ${{ secrets.MATRIX_TOKEN }}
room: ${{ secrets.MATRIX_ROOM }}
message: "CLOSED ${{ github.event.issue.html_url }} by ${{ github.actor }} ${{ github.event.issue.title }}"
- name: "remove in-progress label" - name: "remove in-progress label"
if: github.event.issue.state != 'open' if: github.event.issue.state != 'open'
run: | run: |

View File

@ -68,19 +68,3 @@ jobs:
- name: "build" - name: "build"
id: build id: build
uses: calamares/actions/generic-build@v4 uses: calamares/actions/generic-build@v4
- name: "notify: ok"
if: ${{ success() && github.repository == 'calamares/calamares' }}
uses: calamares/actions/matrix-notify@v4
with:
token: ${{ secrets.MATRIX_TOKEN }}
room: ${{ secrets.MATRIX_ROOM }}
message: |
OK ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}
- name: "notify: fail"
if: ${{ failure() && github.repository == 'calamares/calamares' }}
uses: calamares/actions/matrix-notify@v4
with:
token: ${{ secrets.MATRIX_TOKEN }}
room: ${{ secrets.MATRIX_ROOM }}
message: |
FAIL ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}

35
.github/workflows/nightly-neon.sh vendored Executable file
View File

@ -0,0 +1,35 @@
#! /bin/sh
#
# Install dependencies for the nightly-neon build
#
apt-get update
apt-get -y install git-core jq
apt-get -y install \
build-essential \
cmake \
extra-cmake-modules \
gettext \
kio-dev \
libatasmart-dev \
libboost-python-dev \
libkf5config-dev \
libkf5coreaddons-dev \
libkf5i18n-dev \
libkf5iconthemes-dev \
libkf5parts-dev \
libkf5service-dev \
libkf5solid-dev \
libkpmcore-dev \
libparted-dev \
libpolkit-qt5-1-dev \
libqt5svg5-dev \
libqt5webkit5-dev \
libyaml-cpp-dev \
ninja-build \
os-prober \
pkg-config \
python3-dev \
qtbase5-dev \
qtdeclarative5-dev \
qttools5-dev \
qttools5-dev-tools

View File

@ -19,29 +19,15 @@ jobs:
image: docker://kdeneon/plasma:user image: docker://kdeneon/plasma:user
options: --tmpfs /build:rw --user 0:0 options: --tmpfs /build:rw --user 0:0
steps: steps:
- name: "prepare env"
uses: calamares/actions/prepare-neon@v4
- name: "prepare source" - name: "prepare source"
uses: calamares/actions/generic-checkout@v4 uses: calamares/actions/generic-checkout@v4
- name: "install dependencies"
shell: bash
run: |
./github/workflows/nightly-neon.sh
- name: "build" - name: "build"
id: build id: build
uses: calamares/actions/generic-build@v4 uses: calamares/actions/generic-build@v4
- name: "notify: ok"
if: ${{ success() && github.repository == 'calamares/calamares' }}
uses: calamares/actions/matrix-notify@v4
with:
token: ${{ secrets.MATRIX_TOKEN }}
room: ${{ secrets.MATRIX_ROOM }}
message: |
OK ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}
- name: "notify: fail"
if: ${{ failure() && github.repository == 'calamares/calamares' }}
uses: calamares/actions/matrix-notify@v4
with:
token: ${{ secrets.MATRIX_TOKEN }}
room: ${{ secrets.MATRIX_ROOM }}
message: |
FAIL ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}
- name: "Calamares: archive" - name: "Calamares: archive"
working-directory: ${{ env.BUILDDIR }} working-directory: ${{ env.BUILDDIR }}
run: | run: |

18
.github/workflows/nightly-opensuse-qt6.sh vendored Executable file
View File

@ -0,0 +1,18 @@
#! /bin/sh
#
# Install dependencies for the nightly-opensuse-qt6 build
#
# Add a Qt6/KF6 repo
zypper --non-interactive addrepo -G https://download.opensuse.org/repositories/home:krop:kf6/openSUSE_Tumbleweed/home:krop:kf6.repo
zypper --non-interactive refresh
zypper --non-interactive up
zypper --non-interactive in git-core jq curl
# From deploycala.py
zypper --non-interactive in bison flex git make cmake gcc-c++
zypper --non-interactive in yaml-cpp-devel libpwquality-devel parted-devel python-devel libboost_headers-devel libboost_python3-devel
zypper --non-interactive in libicu-devel libatasmart-devel
# Qt6/KF6 dependencies
zypper --non-interactive in qt6-concurrent-devel qt6-gui-devel qt6-linguist-devel qt6-network-devel qt6-svg-devel qt6-declarative-devel
zypper --non-interactive in kf6-kcoreaddons-devel kf6-kdbusaddons-devel kf6-kcrash-devel
zypper --non-interactive in kf6-kparts-devel # Also installs KF5 things
zypper --non-interactive in libpolkit-qt6-1-devel

View File

@ -0,0 +1,31 @@
name: nightly-opensuse-qt6
on:
schedule:
- cron: "32 2 * * *"
workflow_dispatch:
env:
BUILDDIR: /build
SRCDIR: ${{ github.workspace }}
CMAKE_ARGS: |
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
-DCMAKE_BUILD_TYPE=Debug
-DWITH_QT6=ON
jobs:
build:
runs-on: ubuntu-latest
container:
image: docker://opensuse/tumbleweed
options: --tmpfs /build:rw --user 0:0
steps:
- name: "prepare source"
uses: calamares/actions/generic-checkout@v4
- name: "install dependencies"
shell: bash
run: |
./github/workflows/nightly-opensuse-qt6.sh
- name: "build"
id: build
uses: calamares/actions/generic-build@v4

View File

@ -23,4 +23,4 @@ target_include_directories(
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
) )
target_link_libraries(kdsingleapplication Qt5::Core Qt5::Network) target_link_libraries(kdsingleapplication ${qtname}::Core ${qtname}::Network)

View File

@ -1,7 +0,0 @@
include(CMakeFindDependencyMacro)
find_dependency(Qt5Widgets REQUIRED)
find_dependency(Qt5Network REQUIRED)
# Add the targets file
include("${CMAKE_CURRENT_LIST_DIR}/KDSingleApplicationTargets.cmake")

View File

@ -7,22 +7,59 @@ contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for changelog -- this log starts with version 3.3.0. See CHANGES-3.2 for
the history of the 3.2 series (2018-05 - 2022-08). the history of the 3.2 series (2018-05 - 2022-08).
# 3.3.0 (unreleased)
# 3.3.0-alpha3 (unreleased) The very first we-will-call-it-3.3 release! One of the big changes is that
Calamares -- the core and nearly all of the modules in this repository --
are compatible with Qt6. This means that a Qt6-based distribution can use
Calamares without including another version of Qt. Note that some KDE
Frameworks are required as well, and those need to be Qt6-based as well.
This release contains contributions from (alphabetically by first name):
- Adriaan de Groot
- Anke Boersma
- Hector Martin
- Ivan Borzenkov
## Core ##
## Modules ##
- *keyboard* module can now be explicitly configured to use X11 keyboard
settings or the FreeDesktop locale1 DBus service. The latter is most
useful for Calamares as an "initial setup" system, not an installer,
in a Wayland session. (thanks Hector)
- *keyboard* module now writes X11 layout configuration with variants
for all non-ASCII (e.g. us) layouts. (thanks Ivan)
- *keyboard* module now can configure keyboard switch. (thanks Ivan)
# 3.3.0-alpha3 (2023-08-28)
This release contains contributions from (alphabetically by first name): This release contains contributions from (alphabetically by first name):
- Adriaan de Groot - Adriaan de Groot
- Aleksey Samoilov - Aleksey Samoilov
- Anke Boersma - Anke Boersma
- Arjen Balfoort
- Boria138
- Brian Morison
- Emir Sari - Emir Sari
- Evan Goode
- Evan James - Evan James
- Ficelloo
- Hector Martin
- Jeremy Attall - Jeremy Attall
- Johannes Kamprad - Johannes Kamprad
- Kasta Hashemi
- Kevin Kofler
- Mario Haustein - Mario Haustein
- Masato TOYOSHIMA - Masato TOYOSHIMA
- Panda
- Paolo Dongilli - Paolo Dongilli
- Peter Jung - Peter Jung
- Philip Müller
- Shivanand - Shivanand
- Sławomir Lach
- Sunderland93
- wiz64 - wiz64
## Core ## ## Core ##

View File

@ -19,31 +19,34 @@
# #
# SKIP_MODULES : a space or semicolon-separated list of directory names # SKIP_MODULES : a space or semicolon-separated list of directory names
# under src/modules that should not be built. # under src/modules that should not be built.
# USE_<foo> : fills in SKIP_MODULES for modules called <foo>-<something> # USE_<foo> : fills in SKIP_MODULES for modules called <foo>-<something>.
# WITH_<foo> : try to enable <foo> (these usually default to ON). For # WITH_<foo> : try to enable <foo> (these usually default to ON). For
# a list of WITH_<foo> grep CMakeCache.txt after running # a list of WITH_<foo> grep CMakeCache.txt after running
# CMake once. These affect the ABI offered by Calamares. # CMake once. These affect the ABI offered by Calamares.
# - PYTHON (enable Python Job modules) # - PYTHON (enable Python Job modules)
# - QML (enable QML UI View modules) # - QML (enable QML UI View modules)
# - QT6 (use Qt6 rather than Qt5, default to OFF)
# The WITH_* options affect the ABI of Calamares: you must # The WITH_* options affect the ABI of Calamares: you must
# build (C++) modules for Calamares with the same WITH_* # build (C++) modules for Calamares with the same WITH_*
# settings, or they may not load at all. # settings, or they may not load at all.
# BUILD_<foo> : choose additional things to build # BUILD_<foo> : choose additional things to build
# - TESTING (standard CMake option) # - APPDATA (use AppData in packagechooser, requires QtXml)
# - APPSTREAM (use AppStream in packagechooser, requires libappstream-qt)
# - BUILD_CRASH_REPORTING (uses KCrash, rather than Calamares internal, for crash reporting)
# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py) # - SCHEMA_TESTING (requires Python, see ci/configvalidator.py)
# - KF5Crash (uses KCrash, rather than Calamares internal, for crash reporting) # - TESTING (standard CMake option)
# DEBUG_<foo> : special developer flags for debugging # DEBUG_<foo> : special developer flags for debugging.
# #
# Example usage: # Example usage:
# #
# cmake . -DSKIP_MODULES="partition luksbootkeycfg" # cmake . -DSKIP_MODULES="partition luksbootkeycfg"
# #
# One special target is "show-version", which can be built # To obtain the version number of calamares, run CMake in script mode, e.g.
# to obtain the version number from here. # cmake -P CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
set(CALAMARES_VERSION 3.3.0-alpha3) set(CALAMARES_VERSION 3.3.0)
set(CALAMARES_RELEASE_MODE OFF) # Set to ON during a release set(CALAMARES_RELEASE_MODE OFF) # Set to ON during a release
if(CMAKE_SCRIPT_MODE_FILE) if(CMAKE_SCRIPT_MODE_FILE)
@ -79,11 +82,12 @@ option(INSTALL_COMPLETION "Install shell completions" OFF)
# also update libcalamares/CalamaresConfig.h.in # also update libcalamares/CalamaresConfig.h.in
option(WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON) option(WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON)
option(WITH_QML "Enable QML UI options." ON) option(WITH_QML "Enable QML UI options." ON)
option(WITH_QT6 "Use Qt6 instead of Qt5" OFF)
# #
# Additional parts to build that do not affect ABI # Additional parts to build that do not affect ABI
option(BUILD_SCHEMA_TESTING "Enable schema-validation-tests" ON) option(BUILD_SCHEMA_TESTING "Enable schema-validation-tests" ON)
# Options for the calamares executable # Options for the calamares executable
option(BUILD_KF5Crash "Enable crash reporting with KCrash." ON) option(BUILD_CRASH_REPORTING "Enable crash reporting with KCrash." ON)
# Possible debugging flags are: # Possible debugging flags are:
# - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone # - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone
@ -161,11 +165,29 @@ set( _tx_incomplete eo es_PR gu ie ja-Hira kk kn lo lv mk ne_NP
### Required versions ### Required versions
# #
# See DEPENDENCIES section below. # See DEPENDENCIES section below.
set(QT_VERSION 5.15.0) if(WITH_QT6)
set(YAMLCPP_VERSION 0.5.1) message(STATUS "Building Calamares with Qt6")
set(ECM_VERSION 5.58) set(qtname "Qt6")
set(PYTHONLIBS_VERSION 3.6) set(kfname "KF6")
set(QT_VERSION 6.5.0)
set(ECM_VERSION 5.240)
set(KF_VERSION 5.240) # KDE Neon weirdness
# API that was deprecated before Qt 5.15 causes a compile error
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x060400)
else()
message(STATUS "Building Calamares with Qt5")
set(qtname "Qt5")
set(kfname "KF5")
set(QT_VERSION 5.15.0)
set(ECM_VERSION 5.78)
set(KF_VERSION 5.78)
# API that was deprecated before Qt 5.15 causes a compile error
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050f00)
endif()
set(BOOSTPYTHON_VERSION 1.72.0) set(BOOSTPYTHON_VERSION 1.72.0)
set(PYTHONLIBS_VERSION 3.6)
set(YAMLCPP_VERSION 0.5.1)
### CMAKE SETUP ### CMAKE SETUP
# #
@ -287,62 +309,93 @@ if(CMAKE_COMPILER_IS_GNUCXX)
endif() endif()
endif() endif()
# API that was deprecated before Qt 5.15 causes a compile error
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050f00)
### DEPENDENCIES ### DEPENDENCIES
# #
find_package(Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui LinguistTools Network Svg Widgets) find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Concurrent Core DBus Gui LinguistTools Network Svg Widgets)
if(WITH_QML) if(WITH_QML)
find_package(Qt5 ${QT_VERSION} CONFIG REQUIRED Quick QuickWidgets) find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Quick QuickWidgets)
endif() endif()
# Optional Qt parts # Note that some modules need more Qt modules, optionally.
find_package(Qt5DBus CONFIG)
find_package(YAMLCPP ${YAMLCPP_VERSION} REQUIRED) find_package(YAMLCPP ${YAMLCPP_VERSION})
set_package_properties(
YAMLCPP
PROPERTIES
TYPE REQUIRED
DESCRIPTION "YAML parser for C++"
PURPOSE "Parsing of configuration files"
)
find_package(Polkit${qtname}-1)
if(INSTALL_POLKIT) if(INSTALL_POLKIT)
find_package(PolkitQt5-1 REQUIRED) set_package_properties(
else() Polkit${qtname}-1
# Find it anyway, for dependencies-reporting PROPERTIES
find_package(PolkitQt5-1) TYPE REQUIRED
)
endif() endif()
set_package_properties( set_package_properties(
PolkitQt5-1 Polkit${qtname}-1
PROPERTIES PROPERTIES
DESCRIPTION "Qt5 support for Polkit" DESCRIPTION "${qtname} support for Polkit"
URL "https://cgit.kde.org/polkit-qt-1.git" URL "https://cgit.kde.org/polkit-qt-1.git"
PURPOSE "PolkitQt5-1 helps with installing Polkit configuration" PURPOSE "Polkit${qtname}-1 helps with installing Polkit configuration"
) )
# Find ECM once, and add it to the module search path; Calamares # Find ECM once, and add it to the module search path; Calamares
# modules that need ECM can do # modules that need ECM can do
# find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE), # if(ECM_FOUND)
# no need to mess with the module path after. # no need to mess with the module path after.
find_package(ECM ${ECM_VERSION} NO_MODULE) find_package(ECM ${ECM_VERSION} NO_MODULE)
if(ECM_FOUND) if(ECM_FOUND)
message(STATUS "Found KDE ECM ${ECM_MODULE_PATH}")
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
if(BUILD_TESTING) if(BUILD_TESTING)
# ECM implies that we can build the tests, too # ECM implies that we can build the tests, too
find_package(Qt5 COMPONENTS Test REQUIRED) find_package(${qtname} COMPONENTS Test REQUIRED)
include(ECMAddTests) include(ECMAddTests)
endif() endif()
include(KDEInstallDirs) include(KDEInstallDirs)
endif() endif()
find_package(KF5 ${ECM_VERSION} QUIET COMPONENTS CoreAddons Crash) find_package(${kfname}CoreAddons ${KF_VERSION} QUIET)
set_package_properties( set_package_properties(
KF5::CoreAddons ${kfname}CoreAddons
PROPERTIES PROPERTIES
TYPE REQUIRED TYPE REQUIRED
DESCRIPTION "Classes built on QtCore for About Data" DESCRIPTION "KDE Framework CoreAddons"
URL "https://api.kde.org/frameworks/kcoreaddons/" URL "https://api.kde.org/frameworks/"
PURPOSE "About Calamares" PURPOSE "Essential Framework for AboutData and Macros"
) )
if(NOT KF5Crash_FOUND)
if(BUILD_KF5Crash) # After this point, there should be no REQUIRED find_packages,
message(WARNING "BUILD_KF5Crash is set, but KF5::Crash is not available.") # since we want tidy reporting of optional dependencies.
feature_summary(
WHAT REQUIRED_PACKAGES_NOT_FOUND
FATAL_ON_MISSING_REQUIRED_PACKAGES
DESCRIPTION "The following REQUIRED packages were not found:"
QUIET_ON_EMPTY
)
#
# OPTIONAL DEPENDENCIES
#
# First, set KF back to optional so that any missing components don't trip us up.
find_package(${kfname}Crash ${KF_VERSION} QUIET)
set_package_properties(
${kfname}Crash
PROPERTIES
TYPE OPTIONAL
DESCRIPTION "KDE Framework Crash"
URL "https://api.kde.org/frameworks/"
PURPOSE "Framework for sending Crash Dumps"
)
if(NOT TARGET ${kfname}::Crash)
if(BUILD_CRASH_REPORTING)
message(WARNING "BUILD_CRASH_REPORTING is set, but ${kfname}::Crash is not available.")
endif() endif()
set(BUILD_KF5Crash OFF) set(BUILD_CRASH_REPORTING OFF)
endif() endif()
find_package(Python ${PYTHONLIBS_VERSION} COMPONENTS Interpreter Development) find_package(Python ${PYTHONLIBS_VERSION} COMPONENTS Interpreter Development)
@ -410,6 +463,7 @@ endif()
# when building out-of-tree. # when building out-of-tree.
set(Calamares_WITH_PYTHON ${WITH_PYTHON}) set(Calamares_WITH_PYTHON ${WITH_PYTHON})
set(Calamares_WITH_QML ${WITH_QML}) set(Calamares_WITH_QML ${WITH_QML})
set(Calamares_WITH_QT6 ${WITH_QT6})
### Transifex Translation status ### Transifex Translation status
# #
@ -542,7 +596,12 @@ add_subdirectory(src)
add_feature_info(Python ${WITH_PYTHON} "Python job modules") add_feature_info(Python ${WITH_PYTHON} "Python job modules")
add_feature_info(Qml ${WITH_QML} "QML UI support") add_feature_info(Qml ${WITH_QML} "QML UI support")
add_feature_info(Polkit ${INSTALL_POLKIT} "Install Polkit files") add_feature_info(Polkit ${INSTALL_POLKIT} "Install Polkit files")
add_feature_info(KCrash ${BUILD_KF5Crash} "Crash dumps via KCrash") add_feature_info(KCrash ${BUILD_CRASH_REPORTING} "Crash dumps via KCrash")
### Post-source configuration
#
#
find_package(${kfname} ${KF_VERSION} QUIET COMPONENTS CoreAddons)
### CMake infrastructure installation ### CMake infrastructure installation
# #

View File

@ -101,7 +101,7 @@ function( calamares_add_branding_translations NAME )
file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" ) file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" )
if ( BRANDING_TRANSLATION_FILES ) if ( BRANDING_TRANSLATION_FILES )
qt5_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} ) qt_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} )
add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES} add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/
COMMAND ${CMAKE_COMMAND} -E copy ${QM_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/ COMMAND ${CMAKE_COMMAND} -E copy ${QM_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/

View File

@ -86,9 +86,9 @@ function(calamares_add_library)
# add link targets # add link targets
target_link_libraries(${target} target_link_libraries(${target}
LINK_PUBLIC ${Calamares_LIBRARIES} LINK_PUBLIC ${Calamares_LIBRARIES}
Qt5::Core ${qtname}::Core
Qt5::Gui ${qtname}::Gui
Qt5::Widgets ${qtname}::Widgets
) )
if(LIBRARY_LINK_LIBRARIES) if(LIBRARY_LINK_LIBRARIES)
target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES}) target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES})

View File

@ -36,8 +36,8 @@ function(calamares_add_test name)
LINK_LIBRARIES LINK_LIBRARIES
Calamares::calamares Calamares::calamares
${TEST_LIBRARIES} ${TEST_LIBRARIES}
Qt5::Core ${qtname}::Core
Qt5::Test ${qtname}::Test
) )
calamares_automoc( ${TEST_NAME} ) calamares_automoc( ${TEST_NAME} )
# We specifically pass in the source directory of the test-being- # We specifically pass in the source directory of the test-being-
@ -47,7 +47,7 @@ function(calamares_add_test name)
PRIVATE -DBUILD_AS_TEST="${CMAKE_CURRENT_SOURCE_DIR}" ${TEST_DEFINITIONS} PRIVATE -DBUILD_AS_TEST="${CMAKE_CURRENT_SOURCE_DIR}" ${TEST_DEFINITIONS}
) )
if(TEST_GUI) if(TEST_GUI)
target_link_libraries(${TEST_NAME} Calamares::calamaresui Qt5::Gui) target_link_libraries(${TEST_NAME} Calamares::calamaresui ${qtname}::Gui)
endif() endif()
if(TEST_RESOURCES) if(TEST_RESOURCES)
calamares_autorcc( ${TEST_NAME} ${TEST_RESOURCES} ) calamares_autorcc( ${TEST_NAME} ${TEST_RESOURCES} )

View File

@ -100,3 +100,58 @@ function( install_calamares_gettext_translations )
endif() endif()
endforeach() endforeach()
endfunction() endfunction()
set(_calamares_qrc_translations_qrc_source ${CMAKE_CURRENT_LIST_DIR}/i18n.qrc.in) # Needs to be set outside of function
function(calamares_qrc_translations basename)
set(options "")
set(oneValueArgs SUBDIRECTORY OUTPUT_VARIABLE)
set(multiValueArgs PREFIXES LANGUAGES)
cmake_parse_arguments(_qrt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _qrt_OUTPUT_VARIABLE)
message(FATAL_ERROR "No output variable")
endif()
if(NOT _qrt_PREFIXES)
set(_qrt_PREFIXES "${basename}")
endif()
if(NOT _qrt_LANGUAGES)
set(_qrt_LANGUAGES ${CALAMARES_TRANSLATION_LANGUAGES})
endif()
if(NOT _qrt_SUBDIRECTORY)
set(_qrt_SUBDIRECTORY "")
endif()
set(translations_qrc_infile ${CMAKE_CURRENT_BINARY_DIR}/${basename}.qrc)
set(translations_qrc_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${basename}.cxx)
# Must use this variable name because of the @ substitution
set(calamares_i18n_qrc_content "")
set(calamares_i18n_ts_filelist "")
foreach(lang ${_qrt_LANGUAGES})
foreach(tlsource ${_qrt_PREFIXES})
if(EXISTS "${CMAKE_SOURCE_DIR}/{$_qrt_SUBDIRECTORY}/${tlsource}_${lang}.ts")
string(APPEND calamares_i18n_qrc_content "<file>${tlsource}_${lang}.qm</file>\n")
list(APPEND calamares_i18n_ts_filelist "${CMAKE_SOURCE_DIR}/${_qrt_SUBDIRECTORY}/${tlsource}_${lang}.ts")
endif()
endforeach()
endforeach()
configure_file(${_calamares_qrc_translations_qrc_source} ${translations_qrc_infile} @ONLY)
qt_add_translation(QM_FILES ${calamares_i18n_ts_filelist})
# Run the resource compiler (rcc_options should already be set)
add_custom_command(
OUTPUT ${translations_qrc_outfile}
COMMAND ${qtname}::rcc
ARGS
${rcc_options}
--format-version 1
-name ${basename}
-o ${translations_qrc_outfile}
${translations_qrc_infile}
MAIN_DEPENDENCY ${translations_qrc_infile}
DEPENDS ${QM_FILES}
)
set(${_qrt_OUTPUT_VARIABLE} ${translations_qrc_outfile} PARENT_SCOPE)
endfunction()

View File

@ -11,6 +11,12 @@
# library, which will add definition WITHOUT_KPMcore. # library, which will add definition WITHOUT_KPMcore.
# #
if(NOT TARGET calapmcore) if(NOT TARGET calapmcore)
find_package(${kfname}Config CONFIG)
find_package(${kfname}I18n CONFIG)
find_package(${kfname}WidgetsAddons CONFIG)
if(NOT WITH_QT6)
# TODO: Qt6 how to detect the version of Qt that KPMCore needs?
find_package(KPMcore 20.04.0) find_package(KPMcore 20.04.0)
set_package_properties( set_package_properties(
KPMcore KPMcore
@ -20,6 +26,7 @@ if(NOT TARGET calapmcore)
TYPE RECOMMENDED TYPE RECOMMENDED
PURPOSE "For disk partitioning support" PURPOSE "For disk partitioning support"
) )
endif()
# Create an internal Calamares interface to KPMcore # Create an internal Calamares interface to KPMcore
# and give it a nice alias name. If kpmcore is not found, # and give it a nice alias name. If kpmcore is not found,
@ -27,10 +34,10 @@ if(NOT TARGET calapmcore)
add_library(calapmcore INTERFACE) add_library(calapmcore INTERFACE)
if(KPMcore_FOUND) if(KPMcore_FOUND)
find_package(Qt5 REQUIRED DBus) # Needed for KPMCore find_package(${qtname} REQUIRED DBus) # Needed for KPMCore
find_package(KF5 REQUIRED I18n WidgetsAddons) # Needed for KPMCore find_package(${kfname} REQUIRED I18n WidgetsAddons) # Needed for KPMCore
target_link_libraries(calapmcore INTERFACE kpmcore Qt5::DBus KF5::I18n KF5::WidgetsAddons) target_link_libraries(calapmcore INTERFACE kpmcore ${qtname}::DBus ${kfname}::I18n ${kfname}::WidgetsAddons)
target_include_directories(calapmcore INTERFACE ${KPMCORE_INCLUDE_DIR}) target_include_directories(calapmcore INTERFACE ${KPMCORE_INCLUDE_DIR})
# If there were KPMcore API variations, figure them out here # If there were KPMcore API variations, figure them out here
# target_compile_definitions(calapmcore INTERFACE WITH_KPMcore) # target_compile_definitions(calapmcore INTERFACE WITH_KPMcore)

View File

@ -28,18 +28,15 @@ rules of decent behavior in both communities are pretty much the same).
GitHub Issues are **one** place for discussing Calamares if there are concrete GitHub Issues are **one** place for discussing Calamares if there are concrete
problems or a new feature to discuss. problems or a new feature to discuss.
Issues are not a help channel.
Visit Matrix for help with configuration or compilation.
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/) Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
room, `#calamares:kde.org`. The conversation is bridged with IRC room, `#calamares:kde.org`. Responsiveness is best during the day
on [Libera.Chat](https://libera.chat/). in Europe, but feel free to idle.
Responsiveness is best during the day
in Europe, but feel free to idle. If you use IRC, **DO NOT** ask-and-leave. Keep
that chat window open because it can easily take a few hours for
someone to notice a message.
Matrix is persistent, and we'll see your message eventually. Matrix is persistent, and we'll see your message eventually.
* [![Join us on Matrix](https://img.shields.io/badge/Matrix-%23calamares:kde.org-blue)](https://webchat.kde.org/#/room/%23calamares:kde.org) * [![Join us on Matrix](https://img.shields.io/badge/Matrix-%23calamares:kde.org-blue)](https://webchat.kde.org/#/room/%23calamares:kde.org)
* [![Chat on IRC](https://img.shields.io/badge/IRC-Libera.Chat%20%23calamares-green)](https://kiwiirc.com/client/irc.libera.chat/#calamares)
## General Guidelines ## General Guidelines
@ -57,7 +54,7 @@ stay that way.
If you are writing documentation, use *en_US* spelling. If you are writing documentation, use *en_US* spelling.
If you are doing cool stuff, let us know (on IRC or through issues). If you are doing cool stuff, let us know (on Matrix or through issues).
**Do** fork Calamares to try new things, **don't** keep your fork to **Do** fork Calamares to try new things, **don't** keep your fork to
yourself, **do** upstream things as much as you can. When you make cool yourself, **do** upstream things as much as you can. When you make cool
@ -74,6 +71,32 @@ Up to date
[building-Calamares](https://github.com/calamares/calamares/wiki/Develop-Guide) [building-Calamares](https://github.com/calamares/calamares/wiki/Develop-Guide)
instructions are on the wiki. instructions are on the wiki.
### Simple Build in Docker
You may have success with the Docker images that the CI system uses.
Pick one (or both):
- `docker pull docker://opensuse/tumbleweed`
- `docker pull kdeneon/plasma:user`
Then start a container with the right image, from the root of Calamares
source checkout. Pick one:
- `docker run -ti --tmpfs /build:rw --user 0:0 -v .:/src opensuse/tumbleweed `
- `docker run -ti --tmpfs /build:rw --user 0:0 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 -v .:/src kdeneon/plasma:user bash`
This starts a container with the chosen image (openSUSE Tumbleweed or KDE neon,
here) with a temporary build directory in `/build` and the Calamares
sources mounted as `/src`. KDE neon needs some extra settings to avoid
starting a complete desktop.
Run the script to install dependencies: you could use `deploycala.py`
or one of the shell scripts in `.github/workflows` to install the right
dependencies for the image.
- `cd /src`
- `./.github/workflows/nightly-opensuse-qt6.sh`
Then run CMake (add any CMake options you like at the end) and ninja:
- `cmake -S /src -B /build -G Ninja`
- `ninja -C /build`
### Dependencies ### Dependencies
Main: Main:
@ -81,11 +104,11 @@ Main:
* CMake >= 3.16 * CMake >= 3.16
* Qt >= 5.15 * Qt >= 5.15
* yaml-cpp >= 0.5.1 * yaml-cpp >= 0.5.1
* KDE Frameworks KCoreAddons >= 5.78
* Python >= 3.6 (required for some modules) * Python >= 3.6 (required for some modules)
* Boost.Python >= 1.67.0 (required for some modules) * Boost.Python >= 1.72.0 (required for some modules)
* KDE extra-cmake-modules >= 5.18 (recommended; required for some modules; * KDE extra-cmake-modules >= 5.78 (recommended; required for some modules;
required for some tests) required for some tests)
* KDE Frameworks KCoreAddons (>= 5.58 recommended)
Individual modules may have their own requirements; Individual modules may have their own requirements;
these are listed in CMake output. these are listed in CMake output.

View File

@ -46,20 +46,27 @@ macro(accumulate_deps outvar target namespace)
endforeach() endforeach()
endmacro() endmacro()
# Qt5 infrastructure for translations is required set(Calamares_WITH_QT6 @WITH_QT6@)
set(qt5_required Core Widgets LinguistTools) if(Calamares_WITH_QT6)
accumulate_deps(qt5_required Calamares::calamares Qt5::) set(qtname "Qt6")
accumulate_deps(qt5_required Calamares::calamaresui Qt5::) else()
find_package(Qt5 CONFIG REQUIRED ${qt5_required}) set(qtname "Qt5")
endif()
# Qt infrastructure for translations is required
set(qt_required Core Widgets LinguistTools)
accumulate_deps(qt_required Calamares::calamares ${qtname}::)
accumulate_deps(qt_required Calamares::calamaresui ${qtname}::)
find_package(${qtname} CONFIG REQUIRED ${qt_required})
set(kf5_required "") set(kf5_required "")
accumulate_deps(kf5_required Calamares::calamares KF5::) accumulate_deps(kf5_required Calamares::calamares ${kfname}::)
accumulate_deps(kf5_required Calamares::calamaresui KF5::) accumulate_deps(kf5_required Calamares::calamaresui ${kfname}::)
if(kf5_required) if(kf5_required)
find_package(ECM ${ECM_VERSION} NO_MODULE) find_package(ECM ${ECM_VERSION} NO_MODULE)
if( ECM_FOUND ) if( ECM_FOUND )
list(INSERT CMAKE_MODULE_PATH 0 ${ECM_MODULE_PATH}) list(INSERT CMAKE_MODULE_PATH 0 ${ECM_MODULE_PATH})
find_package(KF5 REQUIRED COMPONENTS ${kf5_required}) find_package(${kfname} REQUIRED COMPONENTS ${kf5_required})
endif() endif()
endif() endif()

View File

@ -11,22 +11,22 @@
[![GitHub license](https://img.shields.io/badge/license-Multiple-green)](https://github.com/calamares/calamares/tree/calamares/LICENSES) [![GitHub license](https://img.shields.io/badge/license-Multiple-green)](https://github.com/calamares/calamares/tree/calamares/LICENSES)
| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://app.transifex.com/calamares/calamares/) | [Contribute](CONTRIBUTING.md) | [Matrix: #calamares:kde.org](https://webchat.kde.org/#/room/%23calamares:kde.org) | [IRC: Libera.Chat #calamares](https://kiwiirc.com/client/irc.libera.chat/#calamares) | [Wiki](https://github.com/calamares/calamares/wiki) | | [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://app.transifex.com/calamares/calamares/) | [Contribute](CONTRIBUTING.md) | [Chat on Matrix: #calamares:kde.org](https://webchat.kde.org/#/room/%23calamares:kde.org) | [Wiki](https://github.com/calamares/calamares/wiki) |
|:--:|:--:|:--:|:--:|:--:|:--:| |:--:|:--:|:--:|:--:|:--:|
> Calamares is a distribution-independent system installer, with an advanced partitioning > Calamares is a distribution-independent system installer, with an advanced partitioning
> feature for both manual and automated partitioning operations. Calamares is designed to > feature for both manual and automated partitioning operations. Calamares is designed to
> be customizable by distribution maintainers without need for cumbersome patching, > be customizable by distribution maintainers without the need for cumbersome patching,
> thanks to third party branding and external modules support. > thanks to third-party branding and external modules support.
## Target Audience ## Target Audience
Calamares is a Linux installer; users who install Linux on a computer will hopefully Calamares is a Linux installer; users who install Linux on a computer will hopefully
use it just **once**, to install their Linux distribution. Calamares is not use it just **once**, to install their Linux distribution. Calamares is not
a "ready to use" application: distributions apply a huge amount of customisation a "ready to use" application: distributions apply a huge amount of customization
and configuration to Calamares, and the target audience for this repository and configuration to Calamares, and the target audience for this repository
is those distributions, and the people who make those Linux distro's. is those distributions, and the people who make those Linux distros.
Calamares has some [generic user documentation](https://calamares.io/docs/users-guide/) Calamares has some [generic user documentation](https://calamares.io/docs/users-guide/)
for end-users, but most of what we have is for distro developers. for end-users, but most of what we have is for distro developers.
@ -45,25 +45,23 @@ The dependencies are explained in [CONTRIBUTING.md](CONTRIBUTING.md).
## Contributing to Calamares ## Contributing to Calamares
Calamares welcomes PRs. New issues are welcome, too. Calamares welcomes PRs. New issues are welcome, too.
There are both the Calamares **core** repository (this one), There are both the Calamares **core** repository (this one)
and an **extensions** repository ([Calamares extensions](https://github.com/calamares/calamares-extensions)). and an **extensions** repository ([Calamares extensions](https://github.com/calamares/calamares-extensions)).
Contributions to code, modules, documentation, the wiki and the website are all welcome. Contributions to code, modules, documentation, the wiki, and the website are all welcome.
There is more information in the [CONTRIBUTING.md](CONTRIBUTING.md) file. There is more information in the [CONTRIBUTING.md](CONTRIBUTING.md) file.
## Join the Conversation ## Join the Conversation
GitHub Issues are **one** place for discussing Calamares if there are concrete GitHub Issues are **one** place for discussing Calamares if there are concrete
problems or a new feature to discuss. problems or a new feature to discuss.
Issues are not a help channel.
Visit Matrix for help with configuration or compilation.
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/) Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
room, `#calamares:kde.org`. The conversation is bridged with IRC room, `#calamares:kde.org`. Responsiveness is best during the day
on [Libera.Chat](https://libera.chat/). in Europe, but feel free to idle.
Responsiveness is best during the day
in Europe, but feel free to idle. If you use IRC, **DO NOT** ask-and-leave. Keep
that chat window open because it can easily take a few hours for
someone to notice a message.
Matrix is persistent, and we'll see your message eventually. Matrix is persistent, and we'll see your message eventually.
* [![Join us on Matrix](https://img.shields.io/badge/Matrix-%23calamares:kde.org-blue)](https://webchat.kde.org/#/room/%23calamares:kde.org) (needs a Matrix account) * [![Join us on Matrix](https://img.shields.io/badge/Matrix-%23calamares:kde.org-blue)](https://webchat.kde.org/#/room/%23calamares:kde.org) (needs a Matrix account)
* [![Chat on IRC](https://img.shields.io/badge/IRC-Libera.Chat%20%23calamares-green)](https://kiwiirc.com/client/irc.libera.chat/#calamares) (IRC supports guest accounts)

View File

@ -3,16 +3,14 @@ Type=Application
Version=1.0 Version=1.0
Name=Install System Name=Install System
GenericName=System Installer GenericName=System Installer
Comment=Calamares System Installer
Keywords=calamares;system;installer; Keywords=calamares;system;installer;
TryExec=calamares TryExec=calamares
Exec=sh -c "pkexec calamares" Exec=sh -c "pkexec calamares"
Comment=Calamares System Installer
Categories=Qt;System;
Icon=calamares Icon=calamares
Terminal=false Terminal=false
SingleMainWindow=true
StartupNotify=true StartupNotify=true
Categories=Qt;System;
X-AppStream-Ignore=true X-AppStream-Ignore=true
Name[ar]=تثبيت النظام Name[ar]=تثبيت النظام

View File

@ -76,7 +76,7 @@ Follow the instructions printed by the release script.
* Upload tarball and signature. * Upload tarball and signature.
* Publish release article on `calamares.io`. * Publish release article on `calamares.io`.
* Close associated milestone on GitHub if it's entirely done. * Close associated milestone on GitHub if it's entirely done.
* Update topic on #calamares IRC channel. * Update topic on `#calamares:kde.org` Matrix channel.
## (4) Post-Release ## (4) Post-Release

View File

@ -9,7 +9,7 @@ indent=spaces=4
# Brackets # Brackets
style=break style=break
add-brackets add-braces
# Spaces # Spaces
pad-paren-in pad-paren-in

View File

@ -15,10 +15,10 @@
include(CalamaresAddTranslations) include(CalamaresAddTranslations)
find_package(Qt5 COMPONENTS Xml) find_package(${qtname} COMPONENTS Xml)
if(Qt5Xml_FOUND) if(TARGET ${qtname}::Xml)
add_executable(txload txload.cpp) add_executable(txload txload.cpp)
target_link_libraries(txload Qt5::Xml) target_link_libraries(txload ${qtname}::Xml)
endif() endif()
install_calamares_gettext_translations(python install_calamares_gettext_translations(python
@ -30,35 +30,9 @@ install_calamares_gettext_translations(python
### TRANSLATIONS ### TRANSLATIONS
# #
# #
set(TS_FILES "") calamares_qrc_translations(calamares-i18n
set(calamares_i18n_qrc_content "") OUTPUT_VARIABLE translation_outfile
PREFIXES calamares tz kb
# calamares and qt language files
foreach(lang ${CALAMARES_TRANSLATION_LANGUAGES})
foreach(tlsource "calamares_${lang}" "tz_${lang}" "kb_${lang}")
if(EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts")
string(APPEND calamares_i18n_qrc_content "<file>${tlsource}.qm</file>\n")
list(APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts")
endif()
endforeach()
endforeach()
set(trans_file calamares_i18n)
set(trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc)
set(trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/calamares-i18n.cxx)
set(CALAMARES_TRANSLATIONS_SOURCE ${trans_outfile})
configure_file(${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${trans_infile} @ONLY)
qt5_add_translation(QM_FILES ${TS_FILES})
# Run the resource compiler (rcc_options should already be set)
add_custom_command(
OUTPUT ${trans_outfile}
COMMAND "${Qt5Core_RCC_EXECUTABLE}"
ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile}
MAIN_DEPENDENCY ${trans_infile}
DEPENDS ${QM_FILES}
) )
add_library(calamares-i18n OBJECT ${trans_outfile}) add_library(calamares-i18n OBJECT ${translation_outfile})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4478
lang/calamares_bqi.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -84,11 +84,6 @@
</context> </context>
<context> <context>
<name>Calamares::DebugWindow</name> <name>Calamares::DebugWindow</name>
<message>
<location filename="../src/calamares/DebugWindow.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/calamares/DebugWindow.ui" line="28"/> <location filename="../src/calamares/DebugWindow.ui" line="28"/>
<source>GlobalStorage</source> <source>GlobalStorage</source>
@ -552,11 +547,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>ChoicePage</name> <name>ChoicePage</name>
<message>
<location filename="../src/modules/partition/gui/ChoicePage.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="138"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="138"/>
<source>Select storage de&amp;vice:</source> <source>Select storage de&amp;vice:</source>
@ -922,12 +912,12 @@ The installer will quit and all changes will be lost.</translation>
<translation>Only letters, numbers, underscore and hyphen are allowed.</translation> <translation>Only letters, numbers, underscore and hyphen are allowed.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/Config.cpp" line="584"/> <location filename="../src/modules/users/Config.cpp" line="599"/>
<source>Your passwords do not match!</source> <source>Your passwords do not match!</source>
<translation>Your passwords do not match!</translation> <translation>Your passwords do not match!</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/Config.cpp" line="598"/> <location filename="../src/modules/users/Config.cpp" line="613"/>
<source>OK!</source> <source>OK!</source>
<translation>OK!</translation> <translation>OK!</translation>
</message> </message>
@ -1464,11 +1454,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>EncryptWidget</name> <name>EncryptWidget</name>
<message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/partition/gui/EncryptWidget.ui" line="36"/> <location filename="../src/modules/partition/gui/EncryptWidget.ui" line="36"/>
<source>En&amp;crypt system</source> <source>En&amp;crypt system</source>
@ -1574,11 +1559,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>FinishedPage</name> <name>FinishedPage</name>
<message>
<location filename="../src/modules/finished/FinishedPage.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/finished/FinishedPage.ui" line="102"/> <location filename="../src/modules/finished/FinishedPage.ui" line="102"/>
<source>&amp;Restart now</source> <source>&amp;Restart now</source>
@ -1929,11 +1909,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>LicensePage</name> <name>LicensePage</name>
<message>
<location filename="../src/modules/license/LicensePage.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/license/LicensePage.ui" line="26"/> <location filename="../src/modules/license/LicensePage.ui" line="26"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;</source> <source>&lt;h1&gt;License Agreement&lt;/h1&gt;</source>
@ -2089,33 +2064,27 @@ The installer will quit and all changes will be lost.</translation>
<translation>Configuring LUKS key file.</translation> <translation>Configuring LUKS key file.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="235"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="254"/>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="243"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="262"/>
<source>No partitions are defined.</source> <source>No partitions are defined.</source>
<translation>No partitions are defined.</translation> <translation>No partitions are defined.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="279"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="297"/>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="286"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="304"/>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="300"/>
<source>Encrypted rootfs setup error</source> <source>Encrypted rootfs setup error</source>
<translation>Encrypted rootfs setup error</translation> <translation>Encrypted rootfs setup error</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="280"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="298"/>
<source>Root partition %1 is LUKS but no passphrase has been set.</source> <source>Root partition %1 is LUKS but no passphrase has been set.</source>
<translation>Root partition %1 is LUKS but no passphrase has been set.</translation> <translation>Root partition %1 is LUKS but no passphrase has been set.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="287"/> <location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="305"/>
<source>Could not create LUKS key file for root partition %1.</source> <source>Could not create LUKS key file for root partition %1.</source>
<translation>Could not create LUKS key file for root partition %1.</translation> <translation>Could not create LUKS key file for root partition %1.</translation>
</message> </message>
<message>
<location filename="../src/modules/luksbootkeyfile/LuksBootKeyFileJob.cpp" line="301"/>
<source>Could not configure LUKS key file on partition %1.</source>
<translation>Could not configure LUKS key file on partition %1.</translation>
</message>
</context> </context>
<context> <context>
<name>MachineIdJob</name> <name>MachineIdJob</name>
@ -2601,18 +2570,13 @@ The installer will quit and all changes will be lost.</translation>
<translation>Unknown error</translation> <translation>Unknown error</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/Config.cpp" line="829"/> <location filename="../src/modules/users/Config.cpp" line="844"/>
<source>Password is empty</source> <source>Password is empty</source>
<translation>Password is empty</translation> <translation>Password is empty</translation>
</message> </message>
</context> </context>
<context> <context>
<name>PackageChooserPage</name> <name>PackageChooserPage</name>
<message>
<location filename="../src/modules/packagechooser/page_package.ui" line="24"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/packagechooser/page_package.ui" line="50"/> <location filename="../src/modules/packagechooser/page_package.ui" line="50"/>
<source>Product Name</source> <source>Product Name</source>
@ -2654,11 +2618,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>Page_Keyboard</name> <name>Page_Keyboard</name>
<message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="74"/> <location filename="../src/modules/keyboard/KeyboardPage.ui" line="74"/>
<source>Keyboard Model:</source> <source>Keyboard Model:</source>
@ -2672,11 +2631,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>Page_UserSetup</name> <name>Page_UserSetup</name>
<message>
<location filename="../src/modules/users/page_usersetup.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="40"/> <location filename="../src/modules/users/page_usersetup.ui" line="40"/>
<source>What is your name?</source> <source>What is your name?</source>
@ -2853,11 +2807,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>PartitionPage</name> <name>PartitionPage</name>
<message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="26"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="26"/>
<source>Storage de&amp;vice:</source> <source>Storage de&amp;vice:</source>
@ -2967,72 +2916,72 @@ The installer will quit and all changes will be lost.</translation>
<translation>After:</translation> <translation>After:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="523"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="545"/>
<source>No EFI system partition configured</source> <source>No EFI system partition configured</source>
<translation>No EFI system partition configured</translation> <translation>No EFI system partition configured</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="527"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="549"/>
<source>EFI system partition configured incorrectly</source> <source>EFI system partition configured incorrectly</source>
<translation>EFI system partition configured incorrectly</translation> <translation>EFI system partition configured incorrectly</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="532"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="554"/>
<source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a suitable filesystem.</source> <source>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a suitable filesystem.</source>
<translation>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a suitable filesystem.</translation> <translation>An EFI system partition is necessary to start %1.&lt;br/&gt;&lt;br/&gt;To configure an EFI system partition, go back and select or create a suitable filesystem.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="543"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="565"/>
<source>The filesystem must be mounted on &lt;strong&gt;%1&lt;/strong&gt;.</source> <source>The filesystem must be mounted on &lt;strong&gt;%1&lt;/strong&gt;.</source>
<translation>The filesystem must be mounted on &lt;strong&gt;%1&lt;/strong&gt;.</translation> <translation>The filesystem must be mounted on &lt;strong&gt;%1&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="549"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="571"/>
<source>The filesystem must have type FAT32.</source> <source>The filesystem must have type FAT32.</source>
<translation>The filesystem must have type FAT32.</translation> <translation>The filesystem must have type FAT32.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="557"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="579"/>
<source>The filesystem must be at least %1 MiB in size.</source> <source>The filesystem must be at least %1 MiB in size.</source>
<translation>The filesystem must be at least %1 MiB in size.</translation> <translation>The filesystem must be at least %1 MiB in size.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="563"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="585"/>
<source>The filesystem must have flag &lt;strong&gt;%1&lt;/strong&gt; set.</source> <source>The filesystem must have flag &lt;strong&gt;%1&lt;/strong&gt; set.</source>
<translation>The filesystem must have flag &lt;strong&gt;%1&lt;/strong&gt; set.</translation> <translation>The filesystem must have flag &lt;strong&gt;%1&lt;/strong&gt; set.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="569"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="591"/>
<source>You can continue without setting up an EFI system partition but your system may fail to start.</source> <source>You can continue without setting up an EFI system partition but your system may fail to start.</source>
<translation>You can continue without setting up an EFI system partition but your system may fail to start.</translation> <translation>You can continue without setting up an EFI system partition but your system may fail to start.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="587"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="609"/>
<source>Option to use GPT on BIOS</source> <source>Option to use GPT on BIOS</source>
<translation>Option to use GPT on BIOS</translation> <translation>Option to use GPT on BIOS</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="588"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="610"/>
<source>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.&lt;br/&gt;&lt;br/&gt;To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the &lt;strong&gt;%2&lt;/strong&gt; flag enabled.&lt;br/&gt;&lt;br/&gt;An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</source> <source>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.&lt;br/&gt;&lt;br/&gt;To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the &lt;strong&gt;%2&lt;/strong&gt; flag enabled.&lt;br/&gt;&lt;br/&gt;An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</source>
<translation>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.&lt;br/&gt;&lt;br/&gt;To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the &lt;strong&gt;%2&lt;/strong&gt; flag enabled.&lt;br/&gt;&lt;br/&gt;An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</translation> <translation>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.&lt;br/&gt;&lt;br/&gt;To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the &lt;strong&gt;%2&lt;/strong&gt; flag enabled.&lt;br/&gt;&lt;br/&gt;An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="622"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="632"/>
<source>Boot partition not encrypted</source> <source>Boot partition not encrypted</source>
<translation>Boot partition not encrypted</translation> <translation>Boot partition not encrypted</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="623"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="633"/>
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source> <source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</source>
<translation>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</translation> <translation>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.&lt;br/&gt;&lt;br/&gt;There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.&lt;br/&gt;You may continue if you wish, but filesystem unlocking will happen later during system startup.&lt;br/&gt;To encrypt the boot partition, go back and recreate it, selecting &lt;strong&gt;Encrypt&lt;/strong&gt; in the partition creation window.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="714"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="723"/>
<source>has at least one disk device available.</source> <source>has at least one disk device available.</source>
<translation>has at least one disk device available.</translation> <translation>has at least one disk device available.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="715"/> <location filename="../src/modules/partition/PartitionViewStep.cpp" line="724"/>
<source>There are no partitions to install on.</source> <source>There are no partitions to install on.</source>
<translation>There are no partitions to install on.</translation> <translation>There are no partitions to install on.</translation>
</message> </message>
@ -3053,11 +3002,6 @@ The installer will quit and all changes will be lost.</translation>
</context> </context>
<context> <context>
<name>PlasmaLnfPage</name> <name>PlasmaLnfPage</name>
<message>
<location filename="../src/modules/plasmalnf/page_plasmalnf.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="79"/> <location filename="../src/modules/plasmalnf/PlasmaLnfPage.cpp" line="79"/>
<source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source> <source>Please choose a look-and-feel for the KDE Plasma Desktop. You can also skip this step and configure the look-and-feel once the system is set up. Clicking on a look-and-feel selection will give you a live preview of that look-and-feel.</source>
@ -3825,11 +3769,6 @@ Output:
</context> </context>
<context> <context>
<name>TrackingPage</name> <name>TrackingPage</name>
<message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/tracking/page_trackingstep.ui" line="28"/> <location filename="../src/modules/tracking/page_trackingstep.ui" line="28"/>
<source>Placeholder</source> <source>Placeholder</source>
@ -3991,11 +3930,6 @@ Output:
</context> </context>
<context> <context>
<name>WelcomePage</name> <name>WelcomePage</name>
<message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="18"/>
<source>Form</source>
<translation>Form</translation>
</message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="79"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="79"/>
<location filename="../src/modules/welcome/WelcomePage.ui" line="98"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="98"/>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

4478
lang/calamares_ka.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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