[merge] with upstream
This commit is contained in:
commit
969965f171
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
---
|
---
|
||||||
BasedOnStyle: WebKit
|
BasedOnStyle: WebKit
|
||||||
|
|
||||||
@ -6,6 +8,7 @@ AlignEscapedNewlines: DontAlign
|
|||||||
AllowAllParametersOfDeclarationOnNextLine: "false"
|
AllowAllParametersOfDeclarationOnNextLine: "false"
|
||||||
AllowShortFunctionsOnASingleLine: Inline
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
AllowShortIfStatementsOnASingleLine: "false"
|
AllowShortIfStatementsOnASingleLine: "false"
|
||||||
|
AllowShortLambdasOnASingleLine: All
|
||||||
AllowShortLoopsOnASingleLine: "false"
|
AllowShortLoopsOnASingleLine: "false"
|
||||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||||
AlwaysBreakTemplateDeclarations: Yes
|
AlwaysBreakTemplateDeclarations: Yes
|
||||||
@ -25,8 +28,9 @@ PointerAlignment: Left
|
|||||||
ReflowComments: "false"
|
ReflowComments: "false"
|
||||||
SortIncludes: "true"
|
SortIncludes: "true"
|
||||||
SpaceAfterCStyleCast: "false"
|
SpaceAfterCStyleCast: "false"
|
||||||
|
SpaceInEmptyBlock: "false"
|
||||||
SpacesBeforeTrailingComments: "2"
|
SpacesBeforeTrailingComments: "2"
|
||||||
SpacesInAngles: "true"
|
SpacesInAngles: "true"
|
||||||
SpacesInParentheses: "true"
|
SpacesInParentheses: "true"
|
||||||
SpacesInSquareBrackets: "true"
|
SpacesInSquareBrackets: "true"
|
||||||
Standard: Cpp11
|
Standard: c++17
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
# http://EditorConfig.org
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
|
5
.git-blame-ignore-revs
Normal file
5
.git-blame-ignore-revs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
18fef8dfe5d926ec0bc979562553adf4db8db2e9
|
||||||
|
874a0c1f38b0da4e5bc83083b13a63b1c7eed935
|
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
.editorconfig export-ignore
|
.editorconfig export-ignore
|
||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
.github export-ignore
|
.github export-ignore
|
||||||
|
63
.github/ISSUE_TEMPLATE/usability_test.md
vendored
Normal file
63
.github/ISSUE_TEMPLATE/usability_test.md
vendored
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
name: Usability testing
|
||||||
|
about: Propose a usability test to help us
|
||||||
|
---
|
||||||
|
# Objective
|
||||||
|
The test goals. e.g.: Evaluate the language selection and the partitioning configurations.
|
||||||
|
|
||||||
|
# Requirements
|
||||||
|
|
||||||
|
## Environment
|
||||||
|
What is the environment that should be tested and how it should be prepared. e.g.: The test needs to run in the release 3.32.34 installing Manjaro.
|
||||||
|
|
||||||
|
## User profile
|
||||||
|
Describe the target users you are looking for the test. e.g.: A user that has already used a system-installer.
|
||||||
|
|
||||||
|
## Facilitator
|
||||||
|
What the facilitator should be familiar with to run the tests. e.g.: The facilitator needs to know how to build Calamares to be able to run the tests.
|
||||||
|
|
||||||
|
# Test design
|
||||||
|
## Tasks
|
||||||
|
A list of tasks that the user has to perform. e.g.:
|
||||||
|
|
||||||
|
* Use another language.
|
||||||
|
* Change partitioning configurations.
|
||||||
|
|
||||||
|
## Scenarios
|
||||||
|
A list of scenarios for the user to perform the tasks. They should put the user in a context and not give specific hints about what you want the user to do. e.g.:
|
||||||
|
|
||||||
|
1. You want to change the installer language to English. Please, look for this option in the application.
|
||||||
|
2. You are a big fan of a lot of distributions and want to have some space left to install other distributions in your disk after this installation. Please, resize your disk to have 35GB of space left.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
## Results
|
||||||
|
|
||||||
|
Uncomment this session once you have your results.
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
| - | User 1 | User 2 | User 3 | User 4 | User 5 |
|
||||||
|
|:------:|:------:|:--------:|:------------------:|:------:|:------:|
|
||||||
|
| Task 1 | :x: | :question: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||||
|
| Task 2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||||
|
| Task 3 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: |
|
||||||
|
| Task 4 | :heavy_check_mark: | :question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||||
|
|
||||||
|
### Task 1
|
||||||
|
|
||||||
|
#### What went well?
|
||||||
|
Describe what happened as expected. e.g.: Most users intuitively found the language selector for changing the installer language.
|
||||||
|
|
||||||
|
#### What were the challenges?
|
||||||
|
Describe where the users had issues and why. Try to write the details to ensure a good understanding of what happened. You can also attach videos, GIFs, or screenshots to illustrate. e.g.: Two of the users had issues searching for English on the language selector because they didn't realize they could scroll down to find it.
|
||||||
|
|
||||||
|
### Task 2
|
||||||
|
|
||||||
|
#### What went well?
|
||||||
|
Describe what happened as expected. e.g.: Most users intuitively found the language selector for changing the installer language.
|
||||||
|
|
||||||
|
#### What were the challenges?
|
||||||
|
Describe where the users had issues and why. Try to write the details to ensure a good understanding of what happened. You can also attach videos, GIFs, or screenshots to illustrate. e.g.: Two of the users had issues searching for English on the language selector because they didn't realize they could scroll down to find it.
|
||||||
|
|
||||||
|
-->
|
32
.github/workflows/issues.yml
vendored
Normal file
32
.github/workflows/issues.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
name: issues
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened, reopened, closed]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
notify:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
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"
|
||||||
|
if: github.event.issue.state != 'open'
|
||||||
|
run: |
|
||||||
|
curl -X DELETE \
|
||||||
|
-H 'Accept: application/vnd.github.v3+json' \
|
||||||
|
-H 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
|
||||||
|
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/labels/hacking%3A%20in-progress"
|
||||||
|
|
46
.github/workflows/nightly-debian.yml
vendored
Normal file
46
.github/workflows/nightly-debian.yml
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
name: nightly-debian-10
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "12 23 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILDDIR: /build
|
||||||
|
SRCDIR: ${{ github.workspace }}
|
||||||
|
CMAKE_ARGS: |
|
||||||
|
-DWEBVIEW_FORCE_WEBKIT=1
|
||||||
|
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||||
|
-DWITH_PYTHONQT=OFF"
|
||||||
|
-DCMAKE_BUILD_TYPE=Debug
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: docker://debian:10
|
||||||
|
options: --tmpfs /build:rw --user 0:0
|
||||||
|
steps:
|
||||||
|
- name: "prepare env"
|
||||||
|
uses: calamares/actions/prepare-debian@v4
|
||||||
|
- name: "prepare source"
|
||||||
|
uses: calamares/actions/generic-checkout@v4
|
||||||
|
- name: "build"
|
||||||
|
id: build
|
||||||
|
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 }}
|
58
.github/workflows/nightly-neon.yml
vendored
Normal file
58
.github/workflows/nightly-neon.yml
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
name: nightly-neon
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "52 23 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILDDIR: /build
|
||||||
|
SRCDIR: ${{ github.workspace }}
|
||||||
|
CMAKE_ARGS: |
|
||||||
|
-DWEBVIEW_FORCE_WEBKIT=1
|
||||||
|
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||||
|
-DWITH_PYTHONQT=OFF"
|
||||||
|
-DCMAKE_BUILD_TYPE=Debug
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: docker://kdeneon/plasma:user
|
||||||
|
options: --tmpfs /build:rw --user 0:0
|
||||||
|
steps:
|
||||||
|
- name: "prepare env"
|
||||||
|
uses: calamares/actions/prepare-neon@v4
|
||||||
|
- name: "prepare source"
|
||||||
|
uses: calamares/actions/generic-checkout@v4
|
||||||
|
- name: "build"
|
||||||
|
id: build
|
||||||
|
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"
|
||||||
|
working-directory: ${{ env.BUILDDIR }}
|
||||||
|
run: |
|
||||||
|
make install DESTDIR=${{ env.BUILDDIR }}/stage
|
||||||
|
tar czf calamares.tar.gz stage
|
||||||
|
- name: "Calamares: upload"
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: calamares-tarball
|
||||||
|
path: ${{ env.BUILDDIR }}/calamares.tar.gz
|
||||||
|
if-no-files-found: error
|
||||||
|
retention-days: 7
|
46
.github/workflows/nightly-opensuse.yml
vendored
Normal file
46
.github/workflows/nightly-opensuse.yml
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
name: nightly-opensuse
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "32 23 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILDDIR: /build
|
||||||
|
SRCDIR: ${{ github.workspace }}
|
||||||
|
CMAKE_ARGS: |
|
||||||
|
-DWEBVIEW_FORCE_WEBKIT=1
|
||||||
|
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||||
|
-DWITH_PYTHONQT=OFF"
|
||||||
|
-DCMAKE_BUILD_TYPE=Debug
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: docker://opensuse/leap
|
||||||
|
options: --tmpfs /build:rw --user 0:0
|
||||||
|
steps:
|
||||||
|
- name: "prepare env"
|
||||||
|
uses: calamares/actions/prepare-opensuse@v4
|
||||||
|
- name: "prepare source"
|
||||||
|
uses: calamares/actions/generic-checkout@v4
|
||||||
|
- name: "build"
|
||||||
|
id: build
|
||||||
|
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 }}
|
56
.github/workflows/push.yml
vendored
Normal file
56
.github/workflows/push.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
name: ci-push
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- calamares
|
||||||
|
- work-3.3
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
- synchronize
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILDDIR: /build
|
||||||
|
SRCDIR: ${{ github.workspace }}
|
||||||
|
CMAKE_ARGS: |
|
||||||
|
-DWEBVIEW_FORCE_WEBKIT=1
|
||||||
|
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||||
|
-DWITH_PYTHONQT=OFF"
|
||||||
|
-DCMAKE_BUILD_TYPE=Debug
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: docker://kdeneon/plasma:user
|
||||||
|
options: --tmpfs /build:rw --user 0:0
|
||||||
|
steps:
|
||||||
|
- name: "prepare env"
|
||||||
|
uses: calamares/actions/prepare-neon@v4
|
||||||
|
- name: "prepare source"
|
||||||
|
uses: calamares/actions/generic-checkout@v4
|
||||||
|
- name: "build"
|
||||||
|
id: build
|
||||||
|
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 }} by ${{ github.actor }} on ${{ github.event.ref }}
|
||||||
|
.. ${{ 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 }} by ${{ github.actor }} on ${{ github.event.ref }}
|
||||||
|
.. ${{ steps.build.outputs.git-summary }}
|
||||||
|
.. ${{ github.event.compare }}
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
# C++ objects and libs
|
# C++ objects and libs
|
||||||
|
|
||||||
*.slo
|
*.slo
|
||||||
@ -47,6 +50,8 @@ CMakeLists.txt.user
|
|||||||
|
|
||||||
# Backup files
|
# Backup files
|
||||||
*~
|
*~
|
||||||
|
*.bak
|
||||||
|
|
||||||
# Kate
|
# Kate
|
||||||
*.kate-swp
|
*.kate-swp
|
||||||
|
tags
|
||||||
|
90
.reuse/dep5
Normal file
90
.reuse/dep5
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: Calamares
|
||||||
|
Source: https://github.com/calamares/calamares.git
|
||||||
|
|
||||||
|
### ACTUAL LICENSES
|
||||||
|
#
|
||||||
|
# Images in the locale module are a bit unclear; they were added
|
||||||
|
# by Teo in 2014 but I suspect they came from somewhere else.
|
||||||
|
#
|
||||||
|
Files: src/modules/locale/images/timezone*.png
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
|
||||||
|
Files: man/calamares.8
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2017 Jonathan Carter <jcarter@linux.com>
|
||||||
|
|
||||||
|
### BUILD ARTIFACTS / NOT SOURCE
|
||||||
|
#
|
||||||
|
# QRC Files are basically build artifacts
|
||||||
|
#
|
||||||
|
FILES: src/modules/*/*.qrc
|
||||||
|
License: CC0-1.0
|
||||||
|
Copyright: no
|
||||||
|
|
||||||
|
# GitHub issue templates are not part of the source
|
||||||
|
#
|
||||||
|
Files: .github/ISSUE_TEMPLATE/*
|
||||||
|
License: CC0-1.0
|
||||||
|
Copyright: no
|
||||||
|
|
||||||
|
# GitHub actions are not part of the source
|
||||||
|
Files: .github/workflows/*.yml
|
||||||
|
License: CC0-1.0
|
||||||
|
Copyright: no
|
||||||
|
|
||||||
|
# Packaging information
|
||||||
|
#
|
||||||
|
Files: data/FreeBSD/distinfo data/FreeBSD/pkg-descr data/FreeBSD/pkg-plist
|
||||||
|
License: CC0-1.0
|
||||||
|
Copyright: no
|
||||||
|
|
||||||
|
# Example data for timezones, which is copied out of zoneinfo,
|
||||||
|
# which has this notice:
|
||||||
|
#
|
||||||
|
# This file is in the public domain, so clarified as of
|
||||||
|
# 2009-05-17 by Arthur David Olson.
|
||||||
|
#
|
||||||
|
Files: data/example-root/usr/share/zoneinfo/Zulu data/example-root/usr/share/zoneinfo/UTC data/example-root/usr/share/zoneinfo/America/New_York
|
||||||
|
License: CC0-1.0
|
||||||
|
Copyright: no
|
||||||
|
|
||||||
|
### TRANSLATIONS
|
||||||
|
#
|
||||||
|
# .desktop files and template change only with translation
|
||||||
|
#
|
||||||
|
FILES: calamares.desktop*
|
||||||
|
License: CC0-1.0
|
||||||
|
Copyright: no
|
||||||
|
|
||||||
|
# Transifex translations derive from the source, and have no
|
||||||
|
# embedded copyright information.
|
||||||
|
#
|
||||||
|
Files: lang/*.ts
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2020 Calamares authors and translators
|
||||||
|
|
||||||
|
# Translations of branding slideshow are the same
|
||||||
|
Files: src/branding/default/lang/*.ts
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2020 Calamares authors and translators
|
||||||
|
|
||||||
|
# Python translation files have some copyright information, but
|
||||||
|
# it's generally very sketchy.
|
||||||
|
#
|
||||||
|
Files: lang/python.pot
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2020 Calamares authors and translators
|
||||||
|
|
||||||
|
Files: lang/python/*/LC_MESSAGES/python.po
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2020 Calamares authors and translators
|
||||||
|
|
||||||
|
Files: src/modules/dummypythonqt/lang/dummypythonqt.pot
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2020 Calamares authors and translators
|
||||||
|
|
||||||
|
Files: src/modules/dummypythonqt/lang/*/LC_MESSAGES/dummypythonqt.po
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
Copyright: 2020 Calamares authors and translators
|
10
.tx/config
10
.tx/config
@ -1,17 +1,15 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[calamares.calamares-master]
|
[calamares.calamares]
|
||||||
file_filter = lang/calamares_<lang>.ts
|
file_filter = lang/calamares_<lang>.ts
|
||||||
source_file = lang/calamares_en.ts
|
source_file = lang/calamares_en.ts
|
||||||
source_lang = en
|
source_lang = en
|
||||||
type = QT
|
type = QT
|
||||||
|
|
||||||
[calamares.dummypythonqt]
|
|
||||||
file_filter = src/modules/dummypythonqt/lang/<lang>/LC_MESSAGES/dummypythonqt.po
|
|
||||||
source_file = src/modules/dummypythonqt/lang/dummypythonqt.pot
|
|
||||||
source_lang = en
|
|
||||||
|
|
||||||
[calamares.fdo]
|
[calamares.fdo]
|
||||||
file_filter = lang/desktop_<lang>.desktop
|
file_filter = lang/desktop_<lang>.desktop
|
||||||
source_file = calamares.desktop
|
source_file = calamares.desktop
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
@ -17,6 +17,7 @@
|
|||||||
#include <QSharedMemory>
|
#include <QSharedMemory>
|
||||||
#include <QSharedData>
|
#include <QSharedData>
|
||||||
#include <QBasicTimer>
|
#include <QBasicTimer>
|
||||||
|
#include <QElapsedTimer>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -764,7 +765,7 @@ void KDSingleApplicationGuard::Private::create( const QStringList & arguments )
|
|||||||
}
|
}
|
||||||
|
|
||||||
const int maxWaitMSecs = 1000 * 60; // stop waiting after 60 seconds
|
const int maxWaitMSecs = 1000 * 60; // stop waiting after 60 seconds
|
||||||
QTime waitTimer;
|
QElapsedTimer waitTimer;
|
||||||
waitTimer.start();
|
waitTimer.start();
|
||||||
|
|
||||||
// lets wait till the other instance initialized the register
|
// lets wait till the other instance initialized the register
|
||||||
@ -1118,7 +1119,7 @@ void KDSingleApplicationGuard::Private::poll() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_kdsingleapplicationguard.cpp"
|
// #include "moc_kdsingleapplicationguard.cpp"
|
||||||
|
|
||||||
#ifdef KDTOOLSCORE_UNITTESTS
|
#ifdef KDTOOLSCORE_UNITTESTS
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
@ -41,7 +41,7 @@ public:
|
|||||||
explicit KDSingleApplicationGuard( Policy policy, QObject * parent=nullptr );
|
explicit KDSingleApplicationGuard( Policy policy, QObject * parent=nullptr );
|
||||||
explicit KDSingleApplicationGuard( const QStringList & arguments, QObject * parent=nullptr );
|
explicit KDSingleApplicationGuard( const QStringList & arguments, QObject * parent=nullptr );
|
||||||
explicit KDSingleApplicationGuard( const QStringList & arguments, Policy policy, QObject * parent=nullptr );
|
explicit KDSingleApplicationGuard( const QStringList & arguments, Policy policy, QObject * parent=nullptr );
|
||||||
~KDSingleApplicationGuard();
|
~KDSingleApplicationGuard() override;
|
||||||
|
|
||||||
bool isOperational() const;
|
bool isOperational() const;
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ public Q_SLOTS:
|
|||||||
void killOtherInstances();
|
void killOtherInstances();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/*! \reimp */ bool event( QEvent * event );
|
/*! \reimp */ bool event( QEvent * event ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#ifndef Q_WS_WIN
|
#ifndef Q_WS_WIN
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
* SPDX-License-Identifier: LGPL-2.0-only
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
|
||||||
*
|
*
|
||||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
*/
|
*/
|
||||||
|
4
3rdparty/waitingspinnerwidget.cpp
vendored
4
3rdparty/waitingspinnerwidget.cpp
vendored
@ -1,6 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2012-2014 Alexander Turkin
|
||||||
|
* SPDX-FileCopyrightText: 2014 William Hallatt
|
||||||
|
* SPDX-FileCopyrightText: 2015 Jacob Dawid
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
||||||
|
7
3rdparty/waitingspinnerwidget.h
vendored
7
3rdparty/waitingspinnerwidget.h
vendored
@ -1,11 +1,14 @@
|
|||||||
/*
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2012-2014 Alexander Turkin
|
||||||
|
* SPDX-FileCopyrightText: 2014 William Hallatt
|
||||||
|
* SPDX-FileCopyrightText: 2015 Jacob Dawid
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
||||||
Modified 2014 by William Hallatt
|
Modified 2014 by William Hallatt
|
||||||
Modified 2015 by Jacob Dawid
|
Modified 2015 by Jacob Dawid
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
the Software without restriction, including without limitation the rights to
|
the Software without restriction, including without limitation the rights to
|
||||||
@ -82,7 +85,7 @@ private slots:
|
|||||||
void rotate();
|
void rotate();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *paintEvent);
|
void paintEvent(QPaintEvent *paintEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static int lineCountDistanceFromPrimary(int current, int primary,
|
static int lineCountDistanceFromPrimary(int current, int primary,
|
||||||
|
5
AUTHORS
5
AUTHORS
@ -1,3 +1,7 @@
|
|||||||
|
<!-- SPDX-FileCopyrightText: no
|
||||||
|
SPDX-License-Identifier: CC0-1.0
|
||||||
|
-->
|
||||||
|
|
||||||
# MAINTAINER
|
# MAINTAINER
|
||||||
|
|
||||||
Calamares development is sponsored by Blue Systems GmbH - Liberating Software.
|
Calamares development is sponsored by Blue Systems GmbH - Liberating Software.
|
||||||
@ -34,6 +38,7 @@ and moral support from (alphabetically by first name or nickname):
|
|||||||
- Kevin Kofler
|
- Kevin Kofler
|
||||||
- Kyle Robertze
|
- Kyle Robertze
|
||||||
- Lisa Vitolo
|
- Lisa Vitolo
|
||||||
|
- Neal Gompa
|
||||||
- n3rdopolis
|
- n3rdopolis
|
||||||
- Philip Müller
|
- Philip Müller
|
||||||
- Ramon Buldó
|
- Ramon Buldó
|
||||||
|
802
CHANGES
802
CHANGES
@ -1,802 +0,0 @@
|
|||||||
This is the changelog for Calamares. For each release, the major changes and
|
|
||||||
contributors are listed. Note that Calamares does not have a historical
|
|
||||||
changelog -- this log starts with version 3.2.0. The release notes on the
|
|
||||||
website will have to do for older versions.
|
|
||||||
|
|
||||||
# 3.2.22 (unreleased) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Anke Boersma
|
|
||||||
- Camilo Higuita
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- Both the sidebar (on the left) and the navigation buttons (along the
|
|
||||||
bottom of the window) can now be configured to use the traditional
|
|
||||||
*widgets*, to use *qml*, or *hidden* from view (hiding the navigation
|
|
||||||
is not recommended unless you have a pure-QML UI to run inside
|
|
||||||
Calamares). The example QML that is compiled into Calamares has
|
|
||||||
been improved. To use your own QML, put files `calamares-sidebar.qml`
|
|
||||||
or `calamares-navigation.qml` into the branding directory.
|
|
||||||
- The sidebar and navigation can now be placed on any side of the
|
|
||||||
main window. This is probably only useful for QML-based UIs.
|
|
||||||
See `branding.desc` for details.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The *welcomeq* module has been improved with better layout and
|
|
||||||
nicer buttons in the example QML form. (Thanks to Anke Boersma)
|
|
||||||
- The *keyboardq* and *localeq* modules now provide some QML for
|
|
||||||
configuring these parts, although they are still very primitive.
|
|
||||||
- *netinstall* has had some minor layout fixes.
|
|
||||||
- *unpackfs* has much more detailed progress reporting and no
|
|
||||||
longer jumps around strangely in overall progress.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.21 (2020-03-27) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Anke Boersma
|
|
||||||
- Camilo Higuita
|
|
||||||
- Gabriel Craciunescu
|
|
||||||
- Gaël PORTAY
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- Python job modules (such as *unpackfs* or *packages*) can now provide
|
|
||||||
a `pretty_status_message()` function, like the existing `pretty_name()`
|
|
||||||
function, that is used to update the status during install. #1330
|
|
||||||
- QML support-modules and objects are now registered into the io.calamares
|
|
||||||
namespace. This affects modules using Calamares models inside their
|
|
||||||
QML UI (at this point, very few). With this release, the necessary
|
|
||||||
`import` for Calamares parts looks like
|
|
||||||
> ```import io.calamares.ui 1.0```
|
|
||||||
A complete list of objects available from Calamares van be found in the
|
|
||||||
documentation in `Qml.h`.
|
|
||||||
- The sidebar (which shows overall progress in the installation) is now
|
|
||||||
more configurable: the branding key *sidebar* controls it. The sidebar
|
|
||||||
can be shown as a widget (default, as it has been), hidden, or use a
|
|
||||||
new QML view which is more easily customised.
|
|
||||||
- A new `settings.conf` key *quit-at-end* will automatically close
|
|
||||||
Calamares (by clicking on the *Done* button) when the end of the
|
|
||||||
sequence is reached. If *finished* is the last module in the sequence,
|
|
||||||
this will run whatever it is configured for; you can also leave out
|
|
||||||
the finished page and Calamares will close after the exec parts.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- *packages* now reports more details in the installation progress-bar.
|
|
||||||
- *netinstall* module supports an `expanded` key, which will pre-expand
|
|
||||||
a group (as if the user had pressed the arrow-button in the tree-view).
|
|
||||||
This only affects the UI, and only the **outermost** level of groups.
|
|
||||||
- *netinstall* module now supports a special value for *groupsUrl*.
|
|
||||||
Setting this to *local* will read the groups directly from the
|
|
||||||
configuration file.
|
|
||||||
- *netinstall* groups now support a new key `immutable` which prevents
|
|
||||||
their check-state from being changed (they are shown, or hidden,
|
|
||||||
as usual and can be expanded).
|
|
||||||
- Modules that use QML need a new import line. The QML file for the
|
|
||||||
module is configured through new keys *qmlSearch* and *qmlFilename*
|
|
||||||
(previously those were without the `qml` prefix, which invites name
|
|
||||||
collisions). The full module identifier is also used as a filename,
|
|
||||||
so that multiple instances of a module can use different QML files.
|
|
||||||
- *partition* module has a number of new features and settings for
|
|
||||||
type, UUID, and filesystem characteristics. Thanks to Gaël.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.20 (2020-02-27) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Bart Ribbers
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- When logging level is set to 8 (eight), for instance via the `-D8`
|
|
||||||
logging flag, or the `-d` debug flag, the *Show debug information*
|
|
||||||
button will appear in the progress view. This helps with debugging
|
|
||||||
issues where the `-d` flag would be inappropriate.
|
|
||||||
- Calamares now starts at logging level 1 (warnings and errors to
|
|
||||||
the console) by default. Previously it (wrongly) started at level 8.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The *partition* module now stores which filesystems are in use in
|
|
||||||
global storage.
|
|
||||||
- The *contextualprocess* module now understands "compound variable
|
|
||||||
names", where a dot (.) is used to index into structured data
|
|
||||||
stored in global storage. This allows it to use the map stored
|
|
||||||
by the partition module (but also other things, like looking into
|
|
||||||
the branding information).
|
|
||||||
- The *packages* module now understands "apk", the Alpine Linux
|
|
||||||
package manager.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.19.1 (2020-02-24) #
|
|
||||||
|
|
||||||
This is a hotfix release for bugs in the *users* module.
|
|
||||||
Reported by Philip Mueller and Walter Lapchynski.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The *users* module no longer wrote `/etc/hostname` at all.
|
|
||||||
- The *users* module erroneously shows the root password input fields.
|
|
||||||
- The *initramfs* module sets a resume-hook even when there is no swap.
|
|
||||||
- The partitioning service expects *udevadm* in `/sbin`, but some
|
|
||||||
distro's place it elsewhere.
|
|
||||||
- The mount service didn't unmount directories properly, leading to
|
|
||||||
blocked installations.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.19 (2020-02-21) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Anke Boersma
|
|
||||||
- Camilo Higuita
|
|
||||||
- Gabriel Craciunescu
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- *Assamese* translation has been completed.
|
|
||||||
- Translations are now loaded from more places: instead of **only**
|
|
||||||
being compiled in to the Calamares executable, they can now be
|
|
||||||
read from the current directory (when Calamares is run in developer
|
|
||||||
mode) and from the application data directory.This allows updating the
|
|
||||||
translations without requiring a recompile: helpful for translators
|
|
||||||
and possibly for distributions with their own translation style.
|
|
||||||
See the translators and deployers wiki for details.
|
|
||||||
- A new `ViewStep` base class, `QmlViewStep`, has been added that loads
|
|
||||||
a configurable QML file and plays it. This is used by the new *notesqml*
|
|
||||||
module -- which is in itself a minimal wrapper around the same that
|
|
||||||
adds only a translatable module name.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The *machineid* and *users* modules now prefer high-quality random
|
|
||||||
data from `/dev/urandom` rather than pseudo-random data. #1254
|
|
||||||
- A new *notesqml* module supports loading QML. This can be used for
|
|
||||||
"fancy" release notes as a QML application, rather than a webview
|
|
||||||
or text widget. Note that this does not replace the slideshow-during-
|
|
||||||
installation module.
|
|
||||||
- The *users* module now has knobs for setting the hostname and writing
|
|
||||||
the `/etc/hosts` file. The new configuration options are documented
|
|
||||||
in `users.conf`. #1140
|
|
||||||
- Multiple *netinstall* modules can exist side-by-side, and they each
|
|
||||||
control the package installation for their part of the package list.
|
|
||||||
Previously, a netinstall module would overwrite all of the package
|
|
||||||
configuration done by other netinstall modules. Translations can be
|
|
||||||
provided in the configuration file, `netinstall.conf`. #1303
|
|
||||||
- The *fstab* module no longer "claims" all the swap partitions it finds
|
|
||||||
on disk. It only uses swap specified for the current installation.
|
|
||||||
This means that "replace" and "alongside" installations will have
|
|
||||||
no swap configured in the target system.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.18 (2020-01-28) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Bill Auger
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- *Assamese* translation has been added (still in preliminary state).
|
|
||||||
- Timezone support code has migrated into the core of Calamares. This
|
|
||||||
means that modules now have easier access to timezone information.
|
|
||||||
Translations for timezones have also been enabled, so it is **possible**
|
|
||||||
at least to translate the displayed zones in the *locale* module.
|
|
||||||
- Branding can now specify whether to (try to) display the Calamares window
|
|
||||||
in the middle of the desktop or not. The *windowPlacement* key in
|
|
||||||
`branding.desc` specifies *center* or *free* placement.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- All modules can now set a new key in `module.desc` called *noconfig*.
|
|
||||||
If this key is set to `true` (the default is `false), no configuration
|
|
||||||
file is searched-for or loaded, and no warning is printed if the
|
|
||||||
configuration is missing. This should tidy up some unnecessary warnings
|
|
||||||
on startup. #1302 #1301
|
|
||||||
- The *license* module has seen a significant change to its looks.
|
|
||||||
Actions are now labeled more clearly, and the URL (or filename)
|
|
||||||
for each license is displayed.
|
|
||||||
- The *locale* module now supports translations for timezone and
|
|
||||||
location names (e.g. "Berlin" is "Berlijn" in Dutch).
|
|
||||||
- *Packagechooser* is a little more careful with displaying
|
|
||||||
default and empty package names. (thanks to Bill Auger)
|
|
||||||
- The *unpackfs* module now carries a larger weight in the overall
|
|
||||||
progress of the installation, which should resolve downstream reports
|
|
||||||
like "progress stops at 24% for a long time". This is currently
|
|
||||||
hard-coded, but will become configurable in a future release. #1176
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.17.1 (2019-12-02) #
|
|
||||||
|
|
||||||
This is a hotfix release for a bug in the grubcfg module.
|
|
||||||
Reported by Philip Mueller and Erik Dubois.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The *grubcfg* module had a typo in it that made installations fail.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.17 (2019-11-28) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Bill Auger
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- A translation "string freeze" is now enforced by the release scripts.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- A new module, *hostinfo*, places information about the host into
|
|
||||||
Global Storage. This can support contextualprocess modules that
|
|
||||||
need that information.
|
|
||||||
- The password-checks in the *users* module are now ordered consistently.
|
|
||||||
A new check *nonempty* can be used to explicitly check for a non-empty
|
|
||||||
password. This was previously hard-coded. If you have no other
|
|
||||||
password-requirements set (e.g. minimum-length) and rely on
|
|
||||||
Calamares to filter out empty passwords, add this check.
|
|
||||||
- The *grubcfg* module has a new configuration setting *keepDistributor*
|
|
||||||
which prevents replacing the `GRUB_DISTRIBUTION` line when writing
|
|
||||||
the new configuration. #1201
|
|
||||||
- *packagechooser* documentation has been updated.
|
|
||||||
- *welcome* module now works better with dark themes.
|
|
||||||
- The *license* module could get into a confused state, now fixed. #1271
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.16 (2019-11-01) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Bill Auger
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- Some obscure build scenarios which would lead to bogus module-is-
|
|
||||||
misconfigured messages on startup have been resolved.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The explanatory messages on the *users* page have moved to tooltips,
|
|
||||||
and placeholder text has been added to the fields. #1202
|
|
||||||
- The bad-password messages in the *users* page have been improved. #1261
|
|
||||||
- Password-checking in the *users* module has been substantially
|
|
||||||
changed. A new key *allowWeakPasswords* can be used to introduce
|
|
||||||
an additional checkbox to the page, which can then be used to
|
|
||||||
switch off strict password checking. (Thanks to Bill Auger)
|
|
||||||
- The icons used in password warnings on the *users* page have been
|
|
||||||
changed to the colorful status icons (rather than the thin red X).
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.15 (2019-10-11) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- No other contributors this time around.
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- No changes to core functionality
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *displaymanager* module now treats *sysconfig* as a regular entry in the
|
|
||||||
*displaymanagers* list, and the *sysconfigSetup* key is used as a
|
|
||||||
shorthand to force **only** that entry in the list. #1253
|
|
||||||
- *machineid* module has been re-written in C++ and extended with
|
|
||||||
a new configuration key to generate urandom pool data. #1252
|
|
||||||
- *unpackfs* now supports a special *sourcefs* value of `file`
|
|
||||||
for copying single files (optionally with renaming) or directory
|
|
||||||
trees to the target system.
|
|
||||||
- *unpackfs* now support an *exclude* and *excludeFile* setting for
|
|
||||||
excluding particular files or patters from unpacking. #1229
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.14 (2019-09-30) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Andrius Štikonas
|
|
||||||
- Harald Sitter
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- No changes to core functionality
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *locale* module no longer recognizes the legacy GeoIP configuration.
|
|
||||||
This has been deprecated since Calamares 3.2.8 and is now removed.
|
|
||||||
- *packagechooser* module can now be custom-labeled in the overall
|
|
||||||
progress (left-hand column). #1228
|
|
||||||
- *displaymanager* module now recognizes KDE Plasma 5.17.
|
|
||||||
- *displaymanager* module now can handle Wayland sessions and can detect
|
|
||||||
sessions from their .desktop files. #1247 #1248
|
|
||||||
- *unpackfs* now has special handling for *sourcefs* setting "file"
|
|
||||||
(so you can copy single files or directories that are on the source
|
|
||||||
system, directly to the target). #1188 #1181
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.13 (2019-08-30) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Arnaud Ferraris
|
|
||||||
- Arnaud Rebillout
|
|
||||||
- Bill Auger
|
|
||||||
- Kevin Kofler
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
- The Calamares standard coding style -- embodied in `ci/calamaresstyle`
|
|
||||||
has had a few updates and has now been consistently applied across
|
|
||||||
the core codebase (e.g. libcalamares, libcalamaresui, calamares, but
|
|
||||||
not the modules).
|
|
||||||
- *KCoreAddons* is now a required dependency. This lets us drop a chunk
|
|
||||||
of code that was copied from KCoreAddons years ago, and use the
|
|
||||||
(maintained!) upstream version instead. It also gives us KMacroExpander
|
|
||||||
everywhere, which will simplify code for handling substitutions
|
|
||||||
in configuration files.
|
|
||||||
- *Slideshows* now have a new property *activatedInCalamares* which
|
|
||||||
controls the keyboard shortcuts (and can control timers and other
|
|
||||||
properties of the slideshow, too).
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- The *packagechooser* module can load data from the config-file,
|
|
||||||
from AppData XML files referred by the config-file, and (new) also
|
|
||||||
from AppStream caches by referring to an application's AppStream id. #1212
|
|
||||||
- The *partition* module now understands the units *KB*, *MB*, *GB* which
|
|
||||||
are powers-of-ten sizes, alongside the powers-of-two sizes that it already
|
|
||||||
used. (thanks to Arnaud)
|
|
||||||
- The *welcome* module now supports a *Donate* button if *showDonateUrl*
|
|
||||||
is set to a non-empty URL. #1197
|
|
||||||
- The *welcome* module can have URLs for the various buttons configured
|
|
||||||
directly in the module configuration (rather than in `branding.desc`).
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.12 (2019-08-07) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- apt-ghetto
|
|
||||||
- Bill Auger
|
|
||||||
- embar
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
- Preliminary work to allow jobs to have a *weight* assigned to them
|
|
||||||
has been added. This will allow the progress bar to better reflect
|
|
||||||
progress by the amount of work done rather than purely by the
|
|
||||||
number of jobs. (Thanks to Bill Auger)
|
|
||||||
- Preliminary work has been added to post the installation log to a
|
|
||||||
pastebin for bug reporting. (Thanks to Bill Auger)
|
|
||||||
- Support for translated human-readable strings in Calamares
|
|
||||||
config files has been added. This is used only in the *packagechooser*
|
|
||||||
module (see below) but will expand to those modules that need
|
|
||||||
user-visible strings from the configuration file (existing
|
|
||||||
solutions need either gettext or Qt support).
|
|
||||||
- Esperanto is now available when Qt version 5.12.2 or later is used.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *fstab* A new configuration key *efiMountOptions* has been added, to
|
|
||||||
allow setting filesystem options specifically for the EFI partition.
|
|
||||||
(Thanks to apt-ghetto)
|
|
||||||
- *packagechooser* is a new module for low-density package choices,
|
|
||||||
e.g. for selecting a default desktop environment, or adding some
|
|
||||||
proprietary drivers, or chosing browsers of office suites. It presents
|
|
||||||
**one** collection of items -- at most ten or so, because of the UI --
|
|
||||||
and the user can select zero or more of them. The behavior is
|
|
||||||
configurable, and package information can be set through the Calamares
|
|
||||||
configuration file or by reading AppData files for the packages. #426
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.11 (2019-07-06) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- No other contributors this time around.
|
|
||||||
|
|
||||||
This is a security release with no functional changes (except for
|
|
||||||
improved security) relative to 3.2.10. The Calamares team would like
|
|
||||||
to acknowledge the help of the following people in reporting and
|
|
||||||
understanding the issues (alphabetically by first name):
|
|
||||||
- Kevin Kofler
|
|
||||||
- Seth Arnold
|
|
||||||
- Simon Quigley
|
|
||||||
- Thomas Ward
|
|
||||||
Both CVE's have been resolved.
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
No core changes.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *initramfs* could create an initramfs with insecure permissions.
|
|
||||||
Since the keyfile is included in the initramfs, an attacker could
|
|
||||||
read the file from the initramfs. #1190 CVE-2019-13178
|
|
||||||
- *luksbootkeyfile* created a key file where a window of opportunity
|
|
||||||
existed where the key file could have too-lax file permissions.
|
|
||||||
#1191 CVE-2019-13179
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.10 (2019-06-28) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- No other contributors this time around.
|
|
||||||
|
|
||||||
Distributions are **advised** to check the slideshow they use for the
|
|
||||||
installation step; changes in loading and translation mechanisms may
|
|
||||||
require changes in the slideshow.
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
- With this release, option *WITH_PYTHONQT* changes default to **off**.
|
|
||||||
There does not seem to be any serious use of the PythonQt API and
|
|
||||||
the UI opportunities it offers, so begin the process of deprecating
|
|
||||||
and removing that. Sometime in the future, QML pages will fill the
|
|
||||||
gap for easily-prototyped-yet-slick UI elements.
|
|
||||||
- A crash when no *finished* page (or rather, no page at all) is
|
|
||||||
configured after the last *exec* section of the sequence has been
|
|
||||||
solved. The *finished* page can be left out (but then you don't get
|
|
||||||
the restart-now functionality). #1168
|
|
||||||
- The *slideshow* which is run during installation now has API versions.
|
|
||||||
API version 1 (the default) runs as before, where the slideshow is loaded
|
|
||||||
when the installation starts. API version 2 loads the slideshow on
|
|
||||||
Calamares startup, thus improving responsiveness. Documentation
|
|
||||||
in `src/branding/README.md`. #1152
|
|
||||||
- The example slideshow now uses API version 2.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *initramfs* has been changed from a Python module to a C++ module.
|
|
||||||
Packaging will need to adjust now it installs a .so instead of a .py.
|
|
||||||
The module itself functions as before. It does have a new configuration
|
|
||||||
option, to change the version passed as to the `-k` option of
|
|
||||||
update-initramfs. #1180
|
|
||||||
- *partition* Now has its own setting for *requiredStorage*, duplicating
|
|
||||||
the same setting in the *welcome* module. This is useful for
|
|
||||||
configurations where no *welcome* module is used, but a minimum
|
|
||||||
size must be checked anyway. #1169
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.9 (2019-06-03) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Kevin Kofler
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
No user- or deployer-visible changes. Bugfixing as usual, see the
|
|
||||||
milestone for details.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *branding* now supports os-release variables in the *strings* section,
|
|
||||||
which allows re-using (at runtime) information set in /etc/os-release .
|
|
||||||
This requires KDE Frameworks 5.58. #1150
|
|
||||||
- *branding* allows the use of FreeDesktop.org icon names for the
|
|
||||||
*productLogo* and *productIcon* keys. If a file is named there, then
|
|
||||||
the file is used, and otherwise the icon is looked up in the current
|
|
||||||
theme. #1160
|
|
||||||
- *packages* On Arch, with the `pacman` package manager, avoid a hang
|
|
||||||
during system update. #1154
|
|
||||||
- *welcome* allows a custom image path or icon name to be set for the
|
|
||||||
language-selection drop-down (instead of the international standard one).
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.8 (2019-05-10) #
|
|
||||||
|
|
||||||
This is a **source-incompatible** release of Calamares. Include files
|
|
||||||
have been shuffled around, so third-party C++ modules will need
|
|
||||||
adjustment to the changed names.
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Arnaud Ferraris
|
|
||||||
- Kevin Kofler
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
- All user-visible texts referring to "MB" and "GB" now use the standard
|
|
||||||
"MiB" and "GiB" wording, which matches what we were actually calculating
|
|
||||||
with (i.e. 2^20 and 2^30 respectively). #1129
|
|
||||||
- The side-pane, which shows the list of steps that will be executed,
|
|
||||||
now tries to fit the text (name of each module) into the available space
|
|
||||||
by shrinking the font as needed. #1137
|
|
||||||
- *libcalamares* (accidentally) linked with Qt's GUI libraries when
|
|
||||||
PythonQt was found. This led to the odd situation where the non-GUI
|
|
||||||
Calamares library depends on a bunch of GUI libraries.
|
|
||||||
- *libcalamares* The `utils/` subdirectory has been hugely refactored,
|
|
||||||
with functionality split out into separate files. C++ modules will
|
|
||||||
need to have their `#include` names updated. Basically, users of
|
|
||||||
`utils/CalamaresUtils.h` will need to include the header file for
|
|
||||||
the functionality that is actually used.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
- *finished* has a new mechanism for configuring the behavior of the
|
|
||||||
*restart now* button. The old-style boolean configuration is still
|
|
||||||
supported but generates a warning. #1138
|
|
||||||
- *locale* module GeoIP configuration has a new preferred format.
|
|
||||||
See `locale.conf` for details. The old configuration is still
|
|
||||||
supported but will be phased out before 3.3.0 -- in particular,
|
|
||||||
support for "legacy" format will be removed, since that was a
|
|
||||||
crutch for the disappearance of one GeoIP provider in 2018.
|
|
||||||
- *oemid* is a new module for configuring OEM phase-0 (image pre-mastering,
|
|
||||||
or pre-deployment) things. It has limited functionality at the moment,
|
|
||||||
writing only a single batch-identifier file. #943
|
|
||||||
- *welcome* can now do GeoIP lookups as well (but be careful with the
|
|
||||||
configuration, since you need a GeoIP that provides country information,
|
|
||||||
not just timezones). This will let Calamares select a starting language
|
|
||||||
that matches where it is -- which might not be useful at all. #934
|
|
||||||
- All Python modules now bail out gracefully on (at least some) bad
|
|
||||||
configurations, rather than raising an exception. The pre-release
|
|
||||||
scripts now test for exceptions to avoid shipping modules with
|
|
||||||
ImportError or SyntaxError results.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.7 (2019-04-27) #
|
|
||||||
|
|
||||||
This is a **hotfix** release for regressions introduced in the
|
|
||||||
Python modules. The *localecfg* module was unusable because of
|
|
||||||
a missing `import`.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.6 (2019-04-25) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Arnaud Ferraris
|
|
||||||
- Dominic Hayes (feren)
|
|
||||||
- Raul Rodrigo Segura (raurodse)
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
* Under-the-hood code cleanups in lots of parts of the core. Calamares now
|
|
||||||
builds without warnings when Clang 8 is used.
|
|
||||||
* A new *disable-cancel-during-exec* setting provides more fine-grained
|
|
||||||
control than *disable-cancel*, which hides the button entirely.
|
|
||||||
#1122 (Thanks to Dominic, FerenOS)
|
|
||||||
* A branding module can now also cause a stylesheet to be loaded, which
|
|
||||||
will be applied to the widgets inside Calamares. #961 (Thanks to Raul)
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* All of the Python-based modules now have translations enabled. #991
|
|
||||||
* *Displaymanager* module has improved support for LightDM configuration.
|
|
||||||
#1123 (Thanks to Dominic, FerenOS)
|
|
||||||
* *License* module can now display local files inline, and scrolls to
|
|
||||||
allow longer lists of licenses and to support long license texts
|
|
||||||
displayed inline. #1124 #1125 #1052
|
|
||||||
* *Partition* module has additional checks for validity partition layouts.
|
|
||||||
#1127 (Thanks to Arnaud)
|
|
||||||
* *Welcome* module has improved usability: a standard icon
|
|
||||||
alongside the *Language* label, for improved recognition,
|
|
||||||
and improved language-list display and sorting. #1107
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.5 (2019-04-15) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Arnaud Ferraris
|
|
||||||
- Dan Simmons
|
|
||||||
- Gabriel Craciunescu
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
* View modules (in C++) can now perform their own requirements-checking
|
|
||||||
to see if installation makes sense. This expands upon the existing
|
|
||||||
requirements checks in the welcome module (RAM, disk space, ..).
|
|
||||||
The checks have been made asynchronous, so that responsiveness during
|
|
||||||
requirements-checking is improved and the user has better feedback.
|
|
||||||
* Support for building an AppImage of Calamares has been added to the
|
|
||||||
`ci/` directory. There are use-cases where a containerized build and
|
|
||||||
configuration make sense rather than having Calamares installed in the
|
|
||||||
host system. (Thanks to the AppImage team, Alexis)
|
|
||||||
* OEM mode (phase-1) now correctly refers to Calamares as a "Setup Program"
|
|
||||||
rather than an installer. #1100 (Thanks to Arnaud)
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* *Bootloader* module: a serious bug introduced in 3.2.4 which prevents
|
|
||||||
succesful boot after installation on EFI machines, has been repaired.
|
|
||||||
(Thanks to Gabriel) #1104
|
|
||||||
* *Displaymanager* module: it is no longer a fatal error to not have any
|
|
||||||
display-managers. #1095
|
|
||||||
* *Partition* module: it is now possible to build without libparted. Since
|
|
||||||
KPMCore may not need this library anymore, it is a dependency that will
|
|
||||||
be dropped as soon as it is feasible. Add this to the CMake flags:
|
|
||||||
`-DCMAKE_DISABLE_FIND_PACKAGE_LIBPARTED=ON`
|
|
||||||
* *Partition* module: the location that is selected for the bootloader,
|
|
||||||
no longer changes when a new partition is created. #1098
|
|
||||||
* Python modules: several modules have had translations added. This is
|
|
||||||
usually only visible when the module runs as part of the *exec* step,
|
|
||||||
when the module's *pretty name* is displayed. In addition, some error
|
|
||||||
messages are now translated.
|
|
||||||
* *UnpackFS* module: improved progress reporting and tests. #565
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.4 (2019-02-12) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Alf Gaida
|
|
||||||
- aliveafter1000
|
|
||||||
- Arnaud Ferraris
|
|
||||||
- Caio Jordão Carvalho
|
|
||||||
- Collabora LTD
|
|
||||||
- Gabriel Craciunescu
|
|
||||||
- Kevin Kofler
|
|
||||||
- Philip Mueller
|
|
||||||
- Scott Harvey
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
* The Calamares application now recognizes the `-X` or `--xdg-config`
|
|
||||||
option, which adds XDG_DATA_DIRS to the places used to find QML
|
|
||||||
and branding directories, and XDG_CONFIG_DIRS to the places used
|
|
||||||
to find the global settings and module configurations. This allows
|
|
||||||
a more fine-grained, and more layered, approach to setting up
|
|
||||||
Calamares configurations (in particular, distro's can **add**
|
|
||||||
configuration files and give them priority, instead of **forking**
|
|
||||||
configuration files).
|
|
||||||
* The *branding* file now contains settings that control the size
|
|
||||||
and resize behavior of Calamares. See the branding file for
|
|
||||||
more documentation. In particular, the setting *windowExpanding*
|
|
||||||
can be set to *normal*, *fullscreen* or *noexpand*.
|
|
||||||
* The `settings.conf` file can now configure whether the *Cancel* button
|
|
||||||
is shown (this isn't a branding thing, because it's quite fundamental
|
|
||||||
to the workflow of the installer).
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* The *partition* module supports RAID devices, but only when Calamares
|
|
||||||
is compiled with the newest KPMCore release (3.3.0).
|
|
||||||
* The calculation of required space -- including swap -- has been simplified,
|
|
||||||
and Calamares no longer reserves 2GiB of space in calculations for internal
|
|
||||||
use (this means that it no longer mysteriously drops swap when the disk
|
|
||||||
size is close to the required installation size).
|
|
||||||
* The name of the type of default filesystem (e.g. ext4 or btrfs) is now handled
|
|
||||||
case- and localization-insensitively. This means that *btrfs* is now always
|
|
||||||
an acceptable spelling.
|
|
||||||
* The currently-selected disk device is remembered between manual partitioning
|
|
||||||
and the partitioning-overview pages. (Thanks to Arnaud)
|
|
||||||
* *partition* There is new support for partitioning layout presets.
|
|
||||||
See `partition.conf` for documentation and details.
|
|
||||||
* The *keyboard* module now handles the (bogus) Austrian keymap for
|
|
||||||
the system console properly. (Thanks to Kevin)
|
|
||||||
* The *preservefiles* module now has a mechanism for setting the permissions
|
|
||||||
(and ownership) of preserved files. (Thanks to Scott)
|
|
||||||
* New module *fsresizer* can be used to resize filesystems. It is intended
|
|
||||||
for use in OEM installs where an image of fixed size is created,
|
|
||||||
and then sized to the actual SD card the user has used.
|
|
||||||
* The *mount* module now handles missing *extraMounts* and *extraMountsEfi*
|
|
||||||
keys gracefully (this is probably a misconfiguration, though, and gives a
|
|
||||||
warning).
|
|
||||||
* The *packages* module now supports pre- and post-script options
|
|
||||||
for all operations, not just during install (keep in mind that
|
|
||||||
these run as three separate shells, though).
|
|
||||||
* A new *rawfs* module supports straightforward copying of filesystems from
|
|
||||||
the installation media to the target stystem. This can be used, for instance,
|
|
||||||
for block-level-identical installations.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.3 (2019-01-09) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- aliveafter1000
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
There are no core changes in this release.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* *partition* Fixed bug where, during detection of existing systems, the
|
|
||||||
existing system partitions may be mounted and then files deleted.
|
|
||||||
This is a **limited** version of the patch from aliveafter1000
|
|
||||||
that will be in 3.2.4, which tries harder to mount filesystems
|
|
||||||
read-only and unmodifiable.
|
|
||||||
* *locale* It was possible to set the installer and system language
|
|
||||||
(e.g. to German) while the global storage value for *locale*
|
|
||||||
remained set to English. Then no localization packages are installed
|
|
||||||
(see feature `${LOCALE}` in `packages.conf`). Reported downstream
|
|
||||||
in Netrunner.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.2 (2018-09-04) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Andrius Štikonas
|
|
||||||
- artoo@cromnix.org
|
|
||||||
- Caio Jordão Carvalho
|
|
||||||
- Harald Sitter
|
|
||||||
- Philip Müller
|
|
||||||
- Simon Quigley
|
|
||||||
- Walter Lapchynski
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
* Example configurations are **no longer installed** by default.
|
|
||||||
The default setting for *INSTALL_CONFIG* has changed. Distributions
|
|
||||||
are strongly encouraged to write their own configuration files and
|
|
||||||
not rely on the example configuration files. Example configurations
|
|
||||||
may change unpredictably.
|
|
||||||
* It is now possible to express module dependencies through the
|
|
||||||
*requiredModules* key in `module.desc`. All of the required modules
|
|
||||||
for a given module must occur in the sequence **before** the module
|
|
||||||
requiring them. None of the core modules use this facility.
|
|
||||||
* The search paths for QML files, branding descriptors and module
|
|
||||||
descriptors have been revamped and now self-document in the log.
|
|
||||||
* A new `ci/RELEASE.sh` script has been added to streamline releases;
|
|
||||||
it is not guaranteed to work anywhere in particular though.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* When multiple modules are mutually exclusive, or don't make sense
|
|
||||||
to enable concurrectly, a new `USE_<foo>` framework has been added
|
|
||||||
to CMake to simplify the selection of modules. This is in addition
|
|
||||||
to the existing `SKIP_MODULES` mechanism.
|
|
||||||
* Various off-by-one-sector errors in the automatic partitioning
|
|
||||||
mode have been corrected. In addition, swap space is calculated
|
|
||||||
a little more conservatively.
|
|
||||||
* A new module has been added to the core which can configure openrc
|
|
||||||
services. To make services configuration consistent:
|
|
||||||
- The *services* module has been **renamed** *services-systemd*,
|
|
||||||
- The openrc module is named *services-openrc*,
|
|
||||||
- At CMake time, it is possible to select all of the services modules,
|
|
||||||
or one specific one, by setting the *USE_services* CMake variable.
|
|
||||||
By default, all of the modules are built and installed.
|
|
||||||
* The systemd-services module can now disable targets and mask both
|
|
||||||
targets and services (which will allow you to break the system with
|
|
||||||
a bad configuration). The configuration is a little more flexible
|
|
||||||
because a service (or target) name can be used on its own with
|
|
||||||
sensible defaults.
|
|
||||||
* The displaymanager module has been entirely revamped. A long-standing
|
|
||||||
bug which ignored the settings for default desktop has been fixed
|
|
||||||
(thanks to Walter Lapchynski). Translations have been added to the
|
|
||||||
error messages. Each DM now has an implementation class for doing
|
|
||||||
all the configuration steps it needs. This groups the code needed for
|
|
||||||
a specific DM (and presumably, per-distro) in one place.
|
|
||||||
Distro's are **strongly advised** to re-test their DM configuration
|
|
||||||
and installation with the revamped code.
|
|
||||||
|
|
||||||
# 3.2.1 (2018-06-25) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Bill Auguer
|
|
||||||
- Gabriel Craciunescu
|
|
||||||
- Phil Mueller
|
|
||||||
- Raul Rodrigo Segura
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
|
|
||||||
* Qt 5.7 is now the minimum required Qt version. Because KPMCore
|
|
||||||
(a fairly fundamental dependency) requires Qt 5.7, Calamares
|
|
||||||
has followed suit.
|
|
||||||
* New testing application `loadmodule` for loading and running a
|
|
||||||
single Calamares module.
|
|
||||||
* New translations Belarussian and Korean.
|
|
||||||
* Jobs can now be *emergency jobs* which run even after a failure.
|
|
||||||
* Improved debugging when modules fail to load.
|
|
||||||
* Bad configuration files will now cause the user-interface of
|
|
||||||
Calamares to display an error message, rather than silently
|
|
||||||
ignoring some configuration errors. This will certainly cause
|
|
||||||
problems for distributions with sloppy configurations.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* New module preservefiles, keeps (log) files around after install;
|
|
||||||
this duplicates functionality with the unmount module, but unmount
|
|
||||||
is very late, rather limited, and fragile.
|
|
||||||
* Interactiveterminal module now disables itself if build requirements
|
|
||||||
are not met, rather than blocking the build.
|
|
||||||
* Fixes in the timezone map data make the southern hemisphere more
|
|
||||||
usable and put Reykjavik in its place.
|
|
||||||
* The packages module can now update the target system if explicitly
|
|
||||||
told to do so.
|
|
||||||
* More paths and executables are configurable in the bootloader module.
|
|
||||||
* Distributions are advised to review the `users.conf` setup **again**,
|
|
||||||
as some changes in version 3.2.0 caused regressions downstream.
|
|
||||||
* Distributions are advised to review their `locale.gen` files
|
|
||||||
**again**. Previous changes were too restrictive, matching only
|
|
||||||
the specific format Chakra Linux uses. Calamares now preserves
|
|
||||||
all the comment-lines in the file and writes enabled locales
|
|
||||||
at the end, with a descriptive comment.
|
|
||||||
|
|
||||||
# 3.2.0 (2018-05-17) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Alf Gaida
|
|
||||||
- AlmAck
|
|
||||||
- Caio Jordão Carvalho
|
|
||||||
- Frede H
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
|
|
||||||
* UI annoyances in the partitioning module were fixed; the
|
|
||||||
mount-point selector is now more obvious when no mount-point
|
|
||||||
has been chosen, and the mount-point and flags are preserved
|
|
||||||
when (re)editing partitions.
|
|
||||||
* The handling of `@@ROOT@@` substitution in shellprocesses was
|
|
||||||
backwards; this has been fixed (the substitution is made when
|
|
||||||
running in the **host**).
|
|
||||||
* The user shell is no longer hard-coded to `/bin/bash`,
|
|
||||||
but follows the default setting for useradd(8), e.g.
|
|
||||||
those set in `/etc/default/useradd`.
|
|
1964
CHANGES-3.2
Normal file
1964
CHANGES-3.2
Normal file
File diff suppressed because it is too large
Load Diff
423
CMakeLists.txt
423
CMakeLists.txt
@ -1,20 +1,15 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# 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
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
# Individual files may have different licenses (like the CMake
|
||||||
# License-Filename: LICENSE
|
# infrastructure, which is BSD-2-Clause licensed). Check the SPDX
|
||||||
|
# identifiers in each file.
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
@ -27,8 +22,13 @@
|
|||||||
# 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.
|
# CMake once. These affect the ABI offered by Calamares.
|
||||||
|
# - PYTHON (enable Python Job modules)
|
||||||
|
# - QML (enable QML UI View modules)
|
||||||
|
# - PYTHONQT # TODO:3.3: remove
|
||||||
# BUILD_<foo> : choose additional things to build
|
# BUILD_<foo> : choose additional things to build
|
||||||
|
# - TESTING (standard CMake option)
|
||||||
|
# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py)
|
||||||
# DEBUG_<foo> : special developer flags for debugging
|
# DEBUG_<foo> : special developer flags for debugging
|
||||||
#
|
#
|
||||||
# Example usage:
|
# Example usage:
|
||||||
@ -38,21 +38,44 @@
|
|||||||
# One special target is "show-version", which can be built
|
# One special target is "show-version", which can be built
|
||||||
# to obtain the version number from here.
|
# to obtain the version number from here.
|
||||||
|
|
||||||
|
# TODO:3.3: Require CMake 3.12
|
||||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
||||||
project( CALAMARES
|
project( CALAMARES
|
||||||
VERSION 3.2.22
|
VERSION 3.2.58
|
||||||
LANGUAGES C CXX )
|
LANGUAGES C CXX
|
||||||
|
)
|
||||||
|
|
||||||
set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development
|
set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development
|
||||||
|
if( CALAMARES_VERSION_RC EQUAL 1 AND CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
|
||||||
|
message( FATAL_ERROR "Do not build development versions in the source-directory." )
|
||||||
|
endif()
|
||||||
|
|
||||||
### OPTIONS
|
### OPTIONS
|
||||||
#
|
#
|
||||||
option( INSTALL_CONFIG "Install configuration files" OFF )
|
option( INSTALL_CONFIG "Install configuration files" OFF )
|
||||||
option( INSTALL_POLKIT "Install Polkit configuration" ON )
|
option( INSTALL_POLKIT "Install Polkit configuration" ON )
|
||||||
option( BUILD_TESTING "Build the testing tree." ON )
|
option( INSTALL_COMPLETION "Install shell completions" OFF )
|
||||||
|
# Options for the calamares executable
|
||||||
|
option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) # TODO:3.3: WITH->BUILD (this isn't an ABI thing)
|
||||||
|
option( WITH_KF5DBus "Use DBus service for unique-application." OFF ) # TODO:3.3: WITH->BUILD
|
||||||
|
# When adding WITH_* that affects the ABI offered by libcalamares,
|
||||||
|
# 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_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF )
|
option( WITH_PYTHONQT "Enable Python view modules API (deprecated, requires PythonQt)." OFF ) # TODO:3.3: remove
|
||||||
option( WITH_KF5Crash "Enable crash reporting with KCrash." ON )
|
option( WITH_QML "Enable QML UI options." ON )
|
||||||
|
#
|
||||||
|
# Additional parts to build
|
||||||
|
option( BUILD_SCHEMA_TESTING "Enable schema-validation-tests" ON )
|
||||||
|
|
||||||
|
|
||||||
|
# Possible debugging flags are:
|
||||||
|
# - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone
|
||||||
|
# widget and enables chatty debug logging, for dealing with the timezone
|
||||||
|
# location database.
|
||||||
|
# - DEBUG_FILESYSTEMS does extra logging and checking when looking at
|
||||||
|
# partition configuration. Lists known KPMCore FS types.
|
||||||
|
# - DEBUG_PARTITION_UNSAFE (see partition/CMakeLists.txt)
|
||||||
|
# - DEBUG_PARTITION_BAIL_OUT (see partition/CMakeLists.txt)
|
||||||
|
|
||||||
|
|
||||||
### USE_*
|
### USE_*
|
||||||
@ -70,8 +93,14 @@ option( WITH_KF5Crash "Enable crash reporting with KCrash." ON )
|
|||||||
# all the implementations are enabled (this just means they are
|
# all the implementations are enabled (this just means they are
|
||||||
# **available** to `settings.conf`, not that they are used).
|
# **available** to `settings.conf`, not that they are used).
|
||||||
#
|
#
|
||||||
# Currently, only USE_services is in use (to pick only one of the two
|
# To explicitly disable a set of modules, set USE_<foo>=none
|
||||||
# modules, systemd or openrc).
|
# (e.g. the literal string none), which won't match any of the
|
||||||
|
# modules but is handled specially.
|
||||||
|
#
|
||||||
|
# The following USE_* functionalities are available:
|
||||||
|
# - *services* picks one of the two service-configuration modules,
|
||||||
|
# for either systemd or openrc. This defaults to empty so that
|
||||||
|
# **both** modules are available.
|
||||||
set( USE_services "" CACHE STRING "Select the services module to use" )
|
set( USE_services "" CACHE STRING "Select the services module to use" )
|
||||||
|
|
||||||
### Calamares application info
|
### Calamares application info
|
||||||
@ -96,26 +125,24 @@ set( CALAMARES_DESCRIPTION_SUMMARY
|
|||||||
#
|
#
|
||||||
# When adding a new language, take care that it is properly loaded
|
# When adding a new language, take care that it is properly loaded
|
||||||
# by the translation framework. Languages with alternate scripts
|
# by the translation framework. Languages with alternate scripts
|
||||||
# (sr@latin in particular) may need special handling in CalamaresUtils.cpp.
|
# (sr@latin in particular) or location (ca@valencia) need special
|
||||||
#
|
# handling in libcalamares/locale/Translation.h .
|
||||||
# TODO: drop the es_ES translation from Transifex
|
|
||||||
#
|
#
|
||||||
# NOTE: move eo (Esperanto) to _ok once Qt can actually create a
|
# NOTE: move eo (Esperanto) to _ok once Qt can actually create a
|
||||||
# locale for it. (Qt 5.12.2 can, see check later on).
|
# locale for it. (Qt 5.12.2 can, see Translation Status section).
|
||||||
# NOTE: update these lines by running txstats.py, or copy these four lines
|
# NOTE: move ie (Interlingue) to _ok once Qt supports it.
|
||||||
# and prefix each variable name with "p", so that the automatic
|
# NOTE: update these lines by running `txstats.py`, or for full automation
|
||||||
# checks for new languages and misspelled ones are done (that is,
|
# `txstats.py -e`. See also
|
||||||
# copy these four lines to four backup lines, add "p", and then update
|
|
||||||
# the original four lines with the current translations).
|
|
||||||
#
|
#
|
||||||
# Total 62 languages
|
# Total 74 languages
|
||||||
set( _tx_complete ca da fi_FI fr he hr ja lt sq tr_TR )
|
set( _tx_complete az az_AZ ca es fi_FI he hi hr ja lt pt_BR pt_PT
|
||||||
set( _tx_good ast cs_CZ de es es_MX et gl hi hu id it_IT ko ml nl
|
sq sv uk zh_TW )
|
||||||
pl pt_BR pt_PT ru sk zh_TW )
|
set( _tx_good as be ca@valencia cs_CZ da de fa fr fur it_IT ko ml
|
||||||
set( _tx_ok ar as be bg el en_GB es_PR eu is mr nb ro sl sr
|
nl ru si sk tg tr_TR vi zh_CN )
|
||||||
sr@latin sv th uk zh_CN )
|
set( _tx_ok ar ast bg bn el en_GB es_MX et eu gl hu id is mr nb oc
|
||||||
set( _tx_incomplete ca@valencia eo fa fr_CH gu kk kn lo mk ne_NP ur
|
pl ro sl sr sr@latin th )
|
||||||
uz )
|
set( _tx_incomplete eo es_PR gu ie ja-Hira kk kn lo lv mk ne_NP
|
||||||
|
ta_IN te ur zh zh_HK )
|
||||||
|
|
||||||
### Required versions
|
### Required versions
|
||||||
#
|
#
|
||||||
@ -148,46 +175,40 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.10.0")
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# CMake Modules
|
||||||
|
include( CMakePackageConfigHelpers )
|
||||||
|
include( CTest )
|
||||||
|
include( FeatureSummary )
|
||||||
|
|
||||||
|
# Calamares Modules
|
||||||
|
include( CMakeColors )
|
||||||
|
|
||||||
### C++ SETUP
|
### C++ SETUP
|
||||||
#
|
#
|
||||||
set( CMAKE_CXX_STANDARD 14 )
|
set( CMAKE_CXX_STANDARD 17 )
|
||||||
set( CMAKE_CXX_STANDARD_REQUIRED ON )
|
set( CMAKE_CXX_STANDARD_REQUIRED ON )
|
||||||
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror=return-type" )
|
||||||
|
set( CMAKE_CXX_FLAGS_DEBUG "-Og -g ${CMAKE_CXX_FLAGS_DEBUG}" )
|
||||||
|
set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||||
|
set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" )
|
||||||
|
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||||
|
|
||||||
set( CMAKE_C_STANDARD 99 )
|
set( CMAKE_C_STANDARD 99 )
|
||||||
set( CMAKE_C_STANDARD_REQUIRED ON )
|
set( CMAKE_C_STANDARD_REQUIRED ON )
|
||||||
|
|
||||||
# Debugging flags
|
|
||||||
#
|
|
||||||
# Possible debugging flags are:
|
|
||||||
# - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone
|
|
||||||
# widget and enables chatty debug logging, for dealing with the timezone
|
|
||||||
# location database.
|
|
||||||
# - DEBUG_FILESYSTEMS does extra logging and checking when looking at
|
|
||||||
# partition configuration. Lists known KPMCore FS types.
|
|
||||||
#
|
|
||||||
# The flags listed here are enabled in Debug builds. By default, none
|
|
||||||
# are **actually** listed, because they're for such specific scenarios.
|
|
||||||
set( _enable_debug_flags
|
|
||||||
# DEBUG_TIMEZONES
|
|
||||||
# DEBUG_FILESYSTEMS
|
|
||||||
)
|
|
||||||
# Add those flags to the CXX flags in a suitable format.
|
|
||||||
foreach( _edf ${_enable_debug_flags} )
|
|
||||||
string( APPEND CMAKE_CXX_FLAGS_DEBUG " -D${_edf}" )
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
||||||
|
set( CMAKE_C_FLAGS_DEBUG "-Og -g" )
|
||||||
|
set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||||
|
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
||||||
|
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||||
|
|
||||||
|
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined -Wl,--fatal-warnings" )
|
||||||
|
|
||||||
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||||
message( STATUS "Found Clang ${CMAKE_CXX_COMPILER_VERSION}, setting up Clang-specific compiler flags." )
|
message( STATUS "Found Clang ${CMAKE_CXX_COMPILER_VERSION}, setting up Clang-specific compiler flags." )
|
||||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
|
||||||
set( CMAKE_C_FLAGS_DEBUG "-g" )
|
|
||||||
set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
|
||||||
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
|
||||||
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
|
||||||
|
|
||||||
# Clang warnings: doing *everything* is counter-productive, since it warns
|
# Clang warnings: doing *everything* is counter-productive, since it warns
|
||||||
# about things which we can't fix (e.g. C++98 incompatibilities, but
|
# about things which we can't fix (e.g. C++98 incompatibilities, but
|
||||||
# Calamares is C++14).
|
# Calamares is C++17).
|
||||||
foreach( CLANG_WARNINGS
|
foreach( CLANG_WARNINGS
|
||||||
-Weverything
|
-Weverything
|
||||||
-Wno-c++98-compat
|
-Wno-c++98-compat
|
||||||
@ -199,40 +220,30 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
|||||||
-Wno-missing-prototypes
|
-Wno-missing-prototypes
|
||||||
-Wno-documentation-unknown-command
|
-Wno-documentation-unknown-command
|
||||||
-Wno-unknown-warning-option
|
-Wno-unknown-warning-option
|
||||||
-Werror=return-type
|
|
||||||
)
|
)
|
||||||
string( APPEND CMAKE_CXX_FLAGS " ${CLANG_WARNINGS}" )
|
string( APPEND CMAKE_CXX_FLAGS " ${CLANG_WARNINGS}" )
|
||||||
endforeach()
|
endforeach()
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='//' -DFALLTHRU='[[clang::fallthrough]]'")
|
|
||||||
|
# The dwarf-debugging flags are slightly different, too
|
||||||
|
string( APPEND CMAKE_CXX_FLAGS_DEBUG " -gdwarf" )
|
||||||
|
string( APPEND CMAKE_C_FLAGS_DEBUG " -gdwarf" )
|
||||||
|
|
||||||
# Third-party code where we don't care so much about compiler warnings
|
# Third-party code where we don't care so much about compiler warnings
|
||||||
# (because it's uncomfortable to patch) get different flags; use
|
# (because it's uncomfortable to patch) get different flags; use
|
||||||
# mark_thirdparty_code( <file> [<file>...] )
|
# mark_thirdparty_code( <file> [<file>...] )
|
||||||
# to switch off warnings for those sources.
|
# to switch off warnings for those sources.
|
||||||
set( SUPPRESS_3RDPARTY_WARNINGS "-Wno-everything" )
|
set( SUPPRESS_3RDPARTY_WARNINGS "-Wno-everything" )
|
||||||
set( SUPPRESS_BOOST_WARNINGS " -Wno-zero-as-null-pointer-constant -Wno-disabled-macro-expansion" )
|
|
||||||
|
|
||||||
set( CMAKE_CXX_FLAGS_DEBUG "-g ${CMAKE_CXX_FLAGS_DEBUG}" )
|
|
||||||
set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
|
||||||
set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" )
|
|
||||||
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
|
||||||
|
|
||||||
set( CMAKE_TOOLCHAIN_PREFIX "llvm-" )
|
set( CMAKE_TOOLCHAIN_PREFIX "llvm-" )
|
||||||
|
|
||||||
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
|
|
||||||
|
|
||||||
# The path prefix is only relevant for CMake 3.16 and later, fixes #1286
|
# The path prefix is only relevant for CMake 3.16 and later, fixes #1286
|
||||||
set( CMAKE_AUTOMOC_PATH_PREFIX OFF )
|
set( CMAKE_AUTOMOC_PATH_PREFIX OFF )
|
||||||
set( CALAMARES_AUTOMOC_OPTIONS "-butils/moc-warnings.h" )
|
set( CALAMARES_AUTOMOC_OPTIONS "-butils/moc-warnings.h" )
|
||||||
set( CALAMARES_AUTOUIC_OPTIONS --include utils/moc-warnings.h )
|
set( CALAMARES_AUTOUIC_OPTIONS --include utils/moc-warnings.h )
|
||||||
else()
|
else()
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" )
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Woverloaded-virtual" )
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
|
||||||
|
|
||||||
set( SUPPRESS_3RDPARTY_WARNINGS "" )
|
set( SUPPRESS_3RDPARTY_WARNINGS "" )
|
||||||
set( SUPPRESS_BOOST_WARNINGS "" )
|
|
||||||
|
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='__builtin_unreachable();' -DFALLTHRU='/* */'" )
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Use mark_thirdparty_code() to reduce warnings from the compiler
|
# Use mark_thirdparty_code() to reduce warnings from the compiler
|
||||||
@ -253,20 +264,12 @@ if( CMAKE_COMPILER_IS_GNUCXX )
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include( FeatureSummary )
|
|
||||||
include( CMakeColors )
|
|
||||||
|
|
||||||
|
|
||||||
### DEPENDENCIES
|
### DEPENDENCIES
|
||||||
#
|
#
|
||||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui Widgets LinguistTools Svg Quick QuickWidgets )
|
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui LinguistTools Network Svg Widgets )
|
||||||
if( Qt5_VERSION VERSION_GREATER 5.12.1 )
|
if( WITH_QML )
|
||||||
# At least Qt 5.12.2 seems to support Esperanto in QLocale
|
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Quick QuickWidgets )
|
||||||
if( "eo" IN_LIST _tx_incomplete )
|
|
||||||
message(STATUS "Esperanto support since Qt 5.12.2, enabling Esperanto locale")
|
|
||||||
list( REMOVE_ITEM _tx_incomplete "eo" )
|
|
||||||
list( APPEND _tx_ok "eo" )
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
# Optional Qt parts
|
# Optional Qt parts
|
||||||
find_package( Qt5DBus CONFIG )
|
find_package( Qt5DBus CONFIG )
|
||||||
@ -300,7 +303,7 @@ if( ECM_FOUND )
|
|||||||
include(KDEInstallDirs)
|
include(KDEInstallDirs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package( KF5 QUIET COMPONENTS CoreAddons Crash )
|
find_package( KF5 QUIET COMPONENTS CoreAddons Crash DBusAddons )
|
||||||
set_package_properties(
|
set_package_properties(
|
||||||
KF5::CoreAddons PROPERTIES
|
KF5::CoreAddons PROPERTIES
|
||||||
TYPE REQUIRED
|
TYPE REQUIRED
|
||||||
@ -309,22 +312,63 @@ set_package_properties(
|
|||||||
PURPOSE "About Calamares"
|
PURPOSE "About Calamares"
|
||||||
)
|
)
|
||||||
if( NOT KF5Crash_FOUND )
|
if( NOT KF5Crash_FOUND )
|
||||||
|
if( WITH_KF5Crash )
|
||||||
|
message(WARNING "WITH_KF5Crash is set, but KF5::Crash is not available.")
|
||||||
|
endif()
|
||||||
set( WITH_KF5Crash OFF )
|
set( WITH_KF5Crash OFF )
|
||||||
endif()
|
endif()
|
||||||
|
if( NOT KF5DBusAddons_FOUND )
|
||||||
|
if( WITH_KF5DBus )
|
||||||
|
message(WARNING "WITH_KF5DBus is set, but KF5::DBusAddons is not available.")
|
||||||
|
endif()
|
||||||
|
set( WITH_KF5DBus OFF )
|
||||||
|
endif()
|
||||||
|
|
||||||
if( BUILD_TESTING )
|
# TODO:3.3: Use FindPython3 instead
|
||||||
enable_testing()
|
find_package( PythonInterp ${PYTHONLIBS_VERSION} )
|
||||||
endif ()
|
set_package_properties(
|
||||||
|
PythonInterp PROPERTIES
|
||||||
|
DESCRIPTION "Python 3 interpreter."
|
||||||
|
URL "https://python.org"
|
||||||
|
PURPOSE "Python 3 interpreter for certain tests."
|
||||||
|
)
|
||||||
|
|
||||||
|
set( _schema_explanation "" )
|
||||||
|
if ( PYTHONINTERP_FOUND )
|
||||||
|
if ( BUILD_SCHEMA_TESTING )
|
||||||
|
# The configuration validator script has some dependencies,
|
||||||
|
# and if they are not installed, don't run. If errors out
|
||||||
|
# with exit(1) on missing dependencies.
|
||||||
|
if ( CALAMARES_CONFIGVALIDATOR_CHECKED )
|
||||||
|
set( _validator_deps ${CALAMARES_CONFIGVALIDATOR_RESULT} )
|
||||||
|
else()
|
||||||
|
exec_program( ${PYTHON_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" -x RETURN_VALUE _validator_deps )
|
||||||
|
set( CALAMARES_CONFIGVALIDATOR_CHECKED TRUE CACHE INTERNAL "Dependencies for configvalidator checked" )
|
||||||
|
set( CALAMARES_CONFIGVALIDATOR_RESULT ${_validator_deps} CACHE INTERNAL "Result of configvalidator dependency check" )
|
||||||
|
endif()
|
||||||
|
# It should never succeed, but only returns 1 when the imports fail
|
||||||
|
if ( _validator_deps EQUAL 1 )
|
||||||
|
set( _schema_explanation " Missing dependencies for configvalidator.py." )
|
||||||
|
set( BUILD_SCHEMA_TESTING OFF )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
# Can't run schema tests without Python3.
|
||||||
|
set( _schema_explanation " Missing Python3." )
|
||||||
|
set( BUILD_SCHEMA_TESTING OFF )
|
||||||
|
endif()
|
||||||
|
add_feature_info( yaml-schema BUILD_SCHEMA_TESTING "Validate YAML (config files) with schema.${_schema_explanation}" )
|
||||||
|
|
||||||
find_package( PythonLibs ${PYTHONLIBS_VERSION} )
|
find_package( PythonLibs ${PYTHONLIBS_VERSION} )
|
||||||
set_package_properties(
|
set_package_properties(
|
||||||
PythonLibs PROPERTIES
|
PythonLibs PROPERTIES
|
||||||
DESCRIPTION "C interface libraries for the Python 3 interpreter."
|
DESCRIPTION "C interface libraries for the Python 3 interpreter."
|
||||||
URL "http://python.org"
|
URL "https://python.org"
|
||||||
PURPOSE "Python 3 is used for Python job modules."
|
PURPOSE "Python 3 is used for Python job modules."
|
||||||
)
|
)
|
||||||
|
|
||||||
if ( PYTHONLIBS_FOUND )
|
if ( PYTHONLIBS_FOUND )
|
||||||
|
# TODO:3.3: Require Boost + CMake; sort out Boost::Python
|
||||||
# Since Boost provides CMake config files (starting with Boost 1.70.
|
# Since Boost provides CMake config files (starting with Boost 1.70.
|
||||||
# or so) the mess that is the Calamares find code picks the wrong
|
# or so) the mess that is the Calamares find code picks the wrong
|
||||||
# bits. Suppress those CMake config files, as suggested by @jmrcpn
|
# bits. Suppress those CMake config files, as suggested by @jmrcpn
|
||||||
@ -335,7 +379,7 @@ if ( PYTHONLIBS_FOUND )
|
|||||||
Boost PROPERTIES
|
Boost PROPERTIES
|
||||||
PURPOSE "Boost.Python is used for Python job modules."
|
PURPOSE "Boost.Python is used for Python job modules."
|
||||||
)
|
)
|
||||||
|
# TODO:3.3: Remove PythonQt support
|
||||||
find_package( PythonQt )
|
find_package( PythonQt )
|
||||||
set_package_properties( PythonQt PROPERTIES
|
set_package_properties( PythonQt PROPERTIES
|
||||||
DESCRIPTION "A Python embedding solution for Qt applications."
|
DESCRIPTION "A Python embedding solution for Qt applications."
|
||||||
@ -353,32 +397,34 @@ if( NOT PYTHONLIBS_FOUND OR NOT PYTHONQT_FOUND )
|
|||||||
set( WITH_PYTHONQT OFF )
|
set( WITH_PYTHONQT OFF )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Now we know the state of the ABI-options, copy them into "Calamares_"
|
||||||
|
# prefixed variables, to match how the variables would-be-named
|
||||||
|
# when building out-of-tree.
|
||||||
|
set(Calamares_WITH_PYTHON ${WITH_PYTHON})
|
||||||
|
set(Calamares_WITH_PYTHONQT ${WITH_PYTHONQT})
|
||||||
|
set(Calamares_WITH_QML ${WITH_QML})
|
||||||
|
|
||||||
### Transifex Translation status
|
### Transifex Translation status
|
||||||
#
|
#
|
||||||
# Construct language lists for use. If there are p_tx* variables,
|
# Construct language lists for use. This massages the language lists
|
||||||
# then run an extra cmake-time check for consistency of the old
|
# for use with older Qt (which does not support Esperanto) and checks
|
||||||
# (p_tx*) and new (_tx*) lists.
|
# for some obvious error. The actual work of compiling translations
|
||||||
|
# is done in the lang/ directory.
|
||||||
#
|
#
|
||||||
set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_incomplete} )
|
if( Qt5_VERSION VERSION_GREATER 5.12.1 )
|
||||||
|
# At least Qt 5.12.2 seems to support Esperanto in QLocale
|
||||||
|
if( "eo" IN_LIST _tx_incomplete )
|
||||||
|
message(STATUS "Esperanto support since Qt 5.12.2, enabling Esperanto locale")
|
||||||
|
list( REMOVE_ITEM _tx_incomplete "eo" )
|
||||||
|
list( APPEND _tx_ok "eo" )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_incomplete} )
|
set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_incomplete} )
|
||||||
set( tx_errors OFF )
|
set( tx_errors OFF )
|
||||||
if ( prev_tx )
|
if ( curr_tx )
|
||||||
# Gone in new list
|
|
||||||
foreach( l ${prev_tx} )
|
|
||||||
list( FIND curr_tx ${l} p_l )
|
|
||||||
if( p_l EQUAL -1 )
|
|
||||||
message(WARNING "Language ${l} was present in previous translations and is now absent.")
|
|
||||||
set( tx_errors ON )
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# New in list
|
# New in list
|
||||||
foreach( l ${curr_tx} )
|
foreach( l ${curr_tx} )
|
||||||
list( FIND prev_tx ${l} p_l )
|
|
||||||
if( p_l EQUAL -1 )
|
|
||||||
message(WARNING "Language ${l} is new.")
|
|
||||||
set( tx_errors ON )
|
|
||||||
endif()
|
|
||||||
set( p_l "lang/calamares_${l}.ts" )
|
set( p_l "lang/calamares_${l}.ts" )
|
||||||
if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} )
|
if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} )
|
||||||
message(WARNING "Language ${l} has no .ts file yet.")
|
message(WARNING "Language ${l} has no .ts file yet.")
|
||||||
@ -389,7 +435,6 @@ if ( prev_tx )
|
|||||||
unset( p_l )
|
unset( p_l )
|
||||||
unset( l )
|
unset( l )
|
||||||
endif()
|
endif()
|
||||||
unset( prev_tx )
|
|
||||||
unset( curr_tx )
|
unset( curr_tx )
|
||||||
if( tx_errors )
|
if( tx_errors )
|
||||||
message( FATAL_ERROR "Translation warnings, see above." )
|
message( FATAL_ERROR "Translation warnings, see above." )
|
||||||
@ -400,7 +445,6 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES )
|
|||||||
|
|
||||||
add_subdirectory( lang ) # i18n tools
|
add_subdirectory( lang ) # i18n tools
|
||||||
|
|
||||||
|
|
||||||
### Example Distro
|
### Example Distro
|
||||||
#
|
#
|
||||||
# For testing purposes Calamares includes a very, very, limited sample
|
# For testing purposes Calamares includes a very, very, limited sample
|
||||||
@ -461,22 +505,15 @@ if( CALAMARES_VERSION_TWEAK )
|
|||||||
set( CALAMARES_VERSION "${CALAMARES_VERSION}.${CALAMARES_VERSION_TWEAK}" )
|
set( CALAMARES_VERSION "${CALAMARES_VERSION}.${CALAMARES_VERSION_TWEAK}" )
|
||||||
endif()
|
endif()
|
||||||
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
|
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
|
||||||
if( CALAMARES_VERSION_RC )
|
|
||||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# additional info for non-release builds
|
# Additional info for non-release builds. The "extended" version information
|
||||||
|
# with date and git information (commit, dirty status) is used only
|
||||||
|
# by CalamaresVersionX.h, which is included by consumers that need a full
|
||||||
|
# version number with all that information; normal consumers can include
|
||||||
|
# CalamaresVersion.h with more stable numbers.
|
||||||
if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" )
|
if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" )
|
||||||
include( CMakeDateStamp )
|
include( ExtendedVersion )
|
||||||
set( CALAMARES_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" )
|
extend_version( "${CALAMARES_VERSION}" OFF CALAMARES_VERSION_SHORT CALAMARES_VERSION )
|
||||||
if( CALAMARES_VERSION_DATE GREATER 0 )
|
|
||||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}.${CALAMARES_VERSION_DATE} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include( CMakeVersionSource )
|
|
||||||
if( CMAKE_VERSION_SOURCE )
|
|
||||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}-${CMAKE_VERSION_SOURCE} )
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Special target for not-RC (e.g. might-be-release) builds.
|
# Special target for not-RC (e.g. might-be-release) builds.
|
||||||
@ -489,7 +526,11 @@ if ( CALAMARES_VERSION_RC EQUAL 0 )
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# enforce using constBegin, constEnd for const-iterators
|
# enforce using constBegin, constEnd for const-iterators
|
||||||
add_definitions( "-DQT_STRICT_ITERATORS" )
|
add_definitions(
|
||||||
|
-DQT_STRICT_ITERATORS
|
||||||
|
-DQT_SHARED
|
||||||
|
-DQT_SHAREDPOINTER_TRACK_POINTERS
|
||||||
|
)
|
||||||
|
|
||||||
# set paths
|
# set paths
|
||||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||||
@ -506,16 +547,10 @@ endif()
|
|||||||
# make predefined install dirs available everywhere
|
# make predefined install dirs available everywhere
|
||||||
include( GNUInstallDirs )
|
include( GNUInstallDirs )
|
||||||
|
|
||||||
# make uninstall support
|
# This is used by CalamaresAddLibrary; once Calamares is installed,
|
||||||
configure_file(
|
# the CalamaresConfig.cmake module sets this variable to the IMPORTED
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
# libraries for Calamares.
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
set( Calamares_LIBRARIES calamares )
|
||||||
IMMEDIATE @ONLY
|
|
||||||
)
|
|
||||||
|
|
||||||
# Early configure these files as we need them later on
|
|
||||||
set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
|
||||||
set( CALAMARES_LIBRARIES calamares )
|
|
||||||
|
|
||||||
add_subdirectory( src )
|
add_subdirectory( src )
|
||||||
|
|
||||||
@ -523,33 +558,41 @@ add_feature_info(Python ${WITH_PYTHON} "Python job modules")
|
|||||||
add_feature_info(PythonQt ${WITH_PYTHONQT} "Python view modules")
|
add_feature_info(PythonQt ${WITH_PYTHONQT} "Python view modules")
|
||||||
add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration")
|
add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration")
|
||||||
add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash")
|
add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash")
|
||||||
|
add_feature_info(KDBusAddons ${WITH_KF5DBus} "Unique-application via DBus")
|
||||||
|
|
||||||
# Add all targets to the build-tree export set
|
### CMake infrastructure installation
|
||||||
|
#
|
||||||
|
#
|
||||||
set( CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Calamares" CACHE PATH "Installation directory for CMake files" )
|
set( CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Calamares" CACHE PATH "Installation directory for CMake files" )
|
||||||
set( CMAKE_INSTALL_FULL_CMAKEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" )
|
set( CMAKE_INSTALL_FULL_CMAKEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" )
|
||||||
export( TARGETS calamares
|
|
||||||
FILE "${PROJECT_BINARY_DIR}/CalamaresLibraryDepends.cmake" )
|
|
||||||
|
|
||||||
# Export the package for use from the build-tree
|
|
||||||
# (this registers the build-tree with a global CMake-registry)
|
|
||||||
export( PACKAGE Calamares )
|
export( PACKAGE Calamares )
|
||||||
|
configure_package_config_file(
|
||||||
# Create a CalamaresBuildTreeSettings.cmake file for the use from the build tree
|
"CalamaresConfig.cmake.in"
|
||||||
configure_file( CalamaresBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/CalamaresBuildTreeSettings.cmake" @ONLY )
|
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
||||||
|
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
# Create the CalamaresConfig.cmake and CalamaresConfigVersion files
|
PATH_VARS
|
||||||
file( RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}" )
|
CMAKE_INSTALL_INCLUDEDIR
|
||||||
|
CMAKE_INSTALL_LIBDIR
|
||||||
configure_file( CalamaresConfig.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" @ONLY )
|
CMAKE_INSTALL_DATADIR
|
||||||
configure_file( CalamaresConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" @ONLY )
|
)
|
||||||
configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY )
|
write_basic_package_version_file(
|
||||||
|
${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
EXPORT Calamares
|
||||||
|
DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
|
FILE "CalamaresTargets.cmake"
|
||||||
|
NAMESPACE Calamares::
|
||||||
|
)
|
||||||
|
|
||||||
# Install the cmake files
|
# Install the cmake files
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES
|
||||||
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
||||||
"${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake"
|
"${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake"
|
||||||
"${PROJECT_BINARY_DIR}/CalamaresUse.cmake"
|
|
||||||
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
||||||
"CMakeModules/CalamaresAddLibrary.cmake"
|
"CMakeModules/CalamaresAddLibrary.cmake"
|
||||||
"CMakeModules/CalamaresAddModuleSubdirectory.cmake"
|
"CMakeModules/CalamaresAddModuleSubdirectory.cmake"
|
||||||
@ -557,49 +600,46 @@ install(
|
|||||||
"CMakeModules/CalamaresAddTest.cmake"
|
"CMakeModules/CalamaresAddTest.cmake"
|
||||||
"CMakeModules/CalamaresAddTranslations.cmake"
|
"CMakeModules/CalamaresAddTranslations.cmake"
|
||||||
"CMakeModules/CalamaresAutomoc.cmake"
|
"CMakeModules/CalamaresAutomoc.cmake"
|
||||||
|
"CMakeModules/CalamaresCheckModuleSelection.cmake"
|
||||||
"CMakeModules/CMakeColors.cmake"
|
"CMakeModules/CMakeColors.cmake"
|
||||||
|
"CMakeModules/FindYAMLCPP.cmake"
|
||||||
DESTINATION
|
DESTINATION
|
||||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Install the export set for use with the install-tree
|
### Miscellaneous installs
|
||||||
install(
|
#
|
||||||
EXPORT
|
#
|
||||||
CalamaresLibraryDepends
|
|
||||||
DESTINATION
|
|
||||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
|
||||||
)
|
|
||||||
|
|
||||||
if( INSTALL_CONFIG )
|
if( INSTALL_CONFIG )
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES settings.conf
|
||||||
settings.conf
|
DESTINATION share/calamares
|
||||||
DESTINATION
|
|
||||||
share/calamares
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if( INSTALL_POLKIT )
|
if( INSTALL_POLKIT )
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES com.github.calamares.calamares.policy
|
||||||
com.github.calamares.calamares.policy
|
DESTINATION "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
||||||
DESTINATION
|
|
||||||
"${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if ( INSTALL_COMPLETION )
|
||||||
|
if( NOT CMAKE_INSTALL_BASHCOMPLETIONDIR )
|
||||||
|
set( CMAKE_INSTALL_BASHCOMPLETIONDIR "${CMAKE_INSTALL_DATADIR}/bash-completion/completions" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install( FILES ${CMAKE_SOURCE_DIR}/data/completion/bash/calamares DESTINATION "${CMAKE_INSTALL_BASHCOMPLETIONDIR}" )
|
||||||
|
endif()
|
||||||
|
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES calamares.desktop
|
||||||
calamares.desktop
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
|
||||||
DESTINATION
|
|
||||||
${CMAKE_INSTALL_DATADIR}/applications
|
|
||||||
)
|
)
|
||||||
|
|
||||||
install(
|
install(
|
||||||
FILES
|
FILES man/calamares.8
|
||||||
man/calamares.8
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man8/
|
||||||
DESTINATION
|
|
||||||
${CMAKE_INSTALL_MANDIR}/man8/
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# uninstall target
|
# uninstall target
|
||||||
@ -637,3 +677,16 @@ feature_summary(
|
|||||||
DESCRIPTION "The following REQUIRED packages were not found:"
|
DESCRIPTION "The following REQUIRED packages were not found:"
|
||||||
QUIET_ON_EMPTY
|
QUIET_ON_EMPTY
|
||||||
)
|
)
|
||||||
|
|
||||||
|
### PACKAGING
|
||||||
|
#
|
||||||
|
# Note: most distro's will do distro-specific packaging rather than
|
||||||
|
# using CPack, and this duplicates information in the AppStream, too.
|
||||||
|
# TODO:3.3 With newer CMake, move HOMEPAGE_URL to the project()call
|
||||||
|
set(CPACK_PACKAGE_VENDOR calamares)
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Linux system installer")
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION "Calamares is a Linux system installer, intended for Linux distributions to use on their ISOs and other bootable media to install the distribution to the end-user's computer. Calamares can also be used as an OEM configuration tool. It is modular, extensible and highly-configurable for Linux distributions from all five major Linux families.")
|
||||||
|
set(CPACK_PACKAGE_HOMEPAGE_URL "https://calamares.io")
|
||||||
|
set(CPACK_PACKAGE_ICON "data/images/squid.png")
|
||||||
|
|
||||||
|
include(CPack)
|
||||||
|
@ -1,3 +1,17 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2019 Kevin Kofler <kevin.kofler@chello.at>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# Handles the mess that Boost::Python is before CMake 3.16 and
|
||||||
|
# Boost 1.70 or so.
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
# On Ubuntu 14.04, the libboost-python1.54-dev package comes with one library
|
# On Ubuntu 14.04, the libboost-python1.54-dev package comes with one library
|
||||||
# for each Python version:
|
# for each Python version:
|
||||||
# libboost_python-py27.so
|
# libboost_python-py27.so
|
||||||
@ -68,7 +82,7 @@ macro( find_boost_python3 boost_version python_version found_var )
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( ${found_var} ${_fbp_found} )
|
set( ${found_var} ${_fbp_found} )
|
||||||
|
|
||||||
# This is superfluous, but allows proper reporting in the features list
|
# This is superfluous, but allows proper reporting in the features list
|
||||||
if ( _fbp_found )
|
if ( _fbp_found )
|
||||||
find_package( Boost ${boost_version} COMPONENTS ${_fbp_found} )
|
find_package( Boost ${boost_version} COMPONENTS ${_fbp_found} )
|
||||||
|
@ -1,3 +1,14 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2014 Kevin Kofler <kevin.kofler@chello.at>
|
||||||
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# Defines a handful of strings that, with normal xterm handling,
|
||||||
|
# will change colors in the output, so it's nicer to read.
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
set(_use_color ON)
|
set(_use_color ON)
|
||||||
if("0" STREQUAL "$ENV{CLICOLOR}")
|
if("0" STREQUAL "$ENV{CLICOLOR}")
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
find_program(DATE_EXECUTABLE NAMES date)
|
|
||||||
mark_as_advanced(DATE_EXECUTABLE)
|
|
||||||
|
|
||||||
if(DATE_EXECUTABLE)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${DATE_EXECUTABLE} +%Y
|
|
||||||
OUTPUT_VARIABLE CMAKE_DATESTAMP_YEAR
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${DATE_EXECUTABLE} +%m
|
|
||||||
OUTPUT_VARIABLE CMAKE_DATESTAMP_MONTH
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${DATE_EXECUTABLE} +%d
|
|
||||||
OUTPUT_VARIABLE CMAKE_DATESTAMP_DAY
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
endif()
|
|
@ -1,45 +0,0 @@
|
|||||||
# Try to identify the current development source version.
|
|
||||||
set(CMAKE_VERSION_SOURCE "")
|
|
||||||
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
|
|
||||||
find_program(GIT_EXECUTABLE NAMES git git.cmd)
|
|
||||||
mark_as_advanced(GIT_EXECUTABLE)
|
|
||||||
if(GIT_EXECUTABLE)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
|
|
||||||
OUTPUT_VARIABLE head
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
if(head)
|
|
||||||
set(branch "")
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${GIT_EXECUTABLE} name-rev HEAD
|
|
||||||
OUTPUT_VARIABLE branch
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
string(REGEX REPLACE "HEAD " "" branch "${branch}")
|
|
||||||
set(CMAKE_VERSION_SOURCE "git-${branch}-${head}")
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
|
|
||||||
OUTPUT_VARIABLE dirty
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
if(dirty)
|
|
||||||
set(CMAKE_VERSION_SOURCE "${CMAKE_VERSION_SOURCE}-dirty")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
elseif(EXISTS ${CMAKE_SOURCE_DIR}/CVS/Repository)
|
|
||||||
file(READ ${CMAKE_SOURCE_DIR}/CVS/Repository repo)
|
|
||||||
set(branch "")
|
|
||||||
if("${repo}" MATCHES "\\.git/")
|
|
||||||
string(REGEX REPLACE ".*\\.git/([^\r\n]*).*" "-\\1" branch "${repo}")
|
|
||||||
endif()
|
|
||||||
set(CMAKE_VERSION_SOURCE "cvs${branch}")
|
|
||||||
endif()
|
|
@ -1,20 +1,11 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
#
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
@ -70,7 +61,11 @@ function( calamares_add_branding NAME )
|
|||||||
foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} )
|
foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} )
|
||||||
set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} )
|
set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} )
|
||||||
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
|
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
|
||||||
configure_file( ${_subpath} ${_subpath} COPYONLY )
|
set( _src ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
|
||||||
|
set( _dst ${CMAKE_CURRENT_BINARY_DIR}/${_subpath} )
|
||||||
|
if( ${_src} IS_NEWER_THAN ${_dst} )
|
||||||
|
configure_file( ${_src} ${_dst} COPYONLY )
|
||||||
|
endif()
|
||||||
|
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath}
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath}
|
||||||
DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ )
|
DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ )
|
||||||
|
@ -1,20 +1,11 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
#
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
@ -62,10 +53,8 @@ function(calamares_add_library)
|
|||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
# add resources from current dir
|
# add resources from current dir
|
||||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}")
|
if(LIBRARY_RESOURCES)
|
||||||
qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}")
|
list(APPEND LIBRARY_SOURCES ${LIBRARY_RESOURCES})
|
||||||
list(APPEND LIBRARY_SOURCES ${LIBRARY_RC_SOURCES})
|
|
||||||
unset(LIBRARY_RC_SOURCES)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# add target
|
# add target
|
||||||
@ -81,6 +70,9 @@ function(calamares_add_library)
|
|||||||
if(LIBRARY_UI)
|
if(LIBRARY_UI)
|
||||||
calamares_autouic(${target} ${LIBRARY_UI})
|
calamares_autouic(${target} ${LIBRARY_UI})
|
||||||
endif()
|
endif()
|
||||||
|
if(LIBRARY_RESOURCES)
|
||||||
|
calamares_autorcc(${target} ${LIBRARY_RESOURCES})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(LIBRARY_EXPORT_MACRO)
|
if(LIBRARY_EXPORT_MACRO)
|
||||||
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO})
|
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO})
|
||||||
@ -93,11 +85,10 @@ 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
|
Qt5::Core
|
||||||
Qt5::Gui
|
Qt5::Gui
|
||||||
Qt5::Widgets
|
Qt5::Widgets
|
||||||
${LIBRARY_QT5_MODULES}
|
|
||||||
)
|
)
|
||||||
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})
|
||||||
|
@ -1,53 +1,94 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
#
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
# Function and support code for adding a Calamares module (either a Qt / C++ plugin,
|
# Function and support code for adding a Calamares module (either a Qt / C++ plugin,
|
||||||
# or a Python module, or whatever) to the build.
|
# or a Python module, or whatever) to the build.
|
||||||
#
|
#
|
||||||
|
# # Usage
|
||||||
|
#
|
||||||
|
# The public API is one single function:
|
||||||
|
#
|
||||||
|
# - calamares_add_module_subdirectory(subdirectory [skiplistvar])
|
||||||
|
# Adds a given *subdirectory* to the modules list, building the
|
||||||
|
# module that is there. The *subdirectory* must contain a `module.desc`
|
||||||
|
# (generally non-C++ modules) or a `CMakeLists.txt` (for C++ modules,
|
||||||
|
# or special cases). The module is assumed to be named after the
|
||||||
|
# (last component of) the subdirectory.
|
||||||
|
#
|
||||||
|
# If the module would be skipped (by the global SKIP_MODULES setting
|
||||||
|
# or a USE_* setting) or the module itself sets a reason to skip
|
||||||
|
# via the calamares_skip_module() function, the module is added to
|
||||||
|
# the list of skipped-modules in *skiplistvar*. If no variable is
|
||||||
|
# given, the reason is set in the parent scope variable
|
||||||
|
# SKIPPED_MODULES . Do **not** use SKIPPED_MODULES as the name of
|
||||||
|
# *skiplistvar*, things will get weird.
|
||||||
|
#
|
||||||
|
# Do note that the name of a module must be the same as the name of
|
||||||
|
# the directory containing it (as documented in src/modules/README.md).
|
||||||
|
# This applies to both C++ and Python modules, and allows the use of
|
||||||
|
# the subdirectory as a proxy for the module name inside.
|
||||||
|
#
|
||||||
|
|
||||||
include( CalamaresAddTranslations )
|
include( CalamaresAddTranslations )
|
||||||
|
include( CalamaresCheckModuleSelection )
|
||||||
|
|
||||||
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
||||||
|
|
||||||
# Convenience function to indicate that a module has been skipped
|
# We look for Pylint (just once) so that unittests can be added that
|
||||||
# (optionally also why). Call this in the module's CMakeLists.txt
|
# check the syntax / variables of Python modules. This should help
|
||||||
macro( calamares_skip_module )
|
# avoid more typo's-in-releases.
|
||||||
set( SKIPPED_MODULES ${SKIPPED_MODULES} ${ARGV} PARENT_SCOPE )
|
if(BUILD_TESTING AND NOT PYLINT_COMMAND_SEARCHED)
|
||||||
endmacro()
|
set(PYLINT_COMMAND_SEARCHED TRUE)
|
||||||
|
find_program(
|
||||||
|
PYLINT_COMMAND
|
||||||
|
NAMES pylint3 pylint
|
||||||
|
PATHS $ENV{HOME}/.local/bin
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
function( calamares_explain_skipped_modules )
|
function( _calamares_add_module_subdirectory_impl )
|
||||||
if ( ARGN )
|
|
||||||
message( "${ColorReset}-- Skipped modules:" )
|
|
||||||
foreach( SUBDIRECTORY ${ARGN} )
|
|
||||||
message( "${ColorReset}-- Skipped ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
|
||||||
endforeach()
|
|
||||||
message( "" )
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function( calamares_add_module_subdirectory )
|
|
||||||
set( SUBDIRECTORY ${ARGV0} )
|
set( SUBDIRECTORY ${ARGV0} )
|
||||||
|
|
||||||
set( SKIPPED_MODULES )
|
# Set SKIPPED_MODULES here, so CMake-based modules have a
|
||||||
|
# parent scope to set it in; this function, in turn sets it
|
||||||
|
# in **its** parent scope.
|
||||||
|
set( SKIPPED_MODULES "" )
|
||||||
set( MODULE_CONFIG_FILES "" )
|
set( MODULE_CONFIG_FILES "" )
|
||||||
|
|
||||||
|
# The module subdirectory may be given as a/b/c, but the module
|
||||||
|
# needs to be installed as "c", so we split off any intermediate
|
||||||
|
# directories.
|
||||||
|
#
|
||||||
|
# Compute _modulename (the last directory name) and _mod_dir
|
||||||
|
# (the full path to the module sources).
|
||||||
|
get_filename_component(_dirname "${SUBDIRECTORY}" DIRECTORY)
|
||||||
|
if( _dirname )
|
||||||
|
# Remove the dirname and any leftover leading /s
|
||||||
|
string( REGEX REPLACE "^${_dirname}/*" "" _modulename "${SUBDIRECTORY}" )
|
||||||
|
else()
|
||||||
|
set( _modulename ${SUBDIRECTORY} )
|
||||||
|
endif()
|
||||||
|
# Strip any remaining /
|
||||||
|
string( REGEX REPLACE "/" "" _modulename "${_modulename}" )
|
||||||
set( _mod_dir "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" )
|
set( _mod_dir "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" )
|
||||||
|
|
||||||
|
# Skip list check applies to all kinds of modules
|
||||||
|
calamares_check_skip( ${_modulename} SKIPPED_MODULES )
|
||||||
|
if ( SKIPPED_MODULES )
|
||||||
|
# If it's skipped by infrastucture, the message already includes the module
|
||||||
|
# name. We don't need to do any further checking.
|
||||||
|
set( SKIPPED_MODULES "${SKIPPED_MODULES}" PARENT_SCOPE )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
||||||
if( EXISTS "${_mod_dir}/CMakeLists.txt" )
|
if( EXISTS "${_mod_dir}/CMakeLists.txt" )
|
||||||
add_subdirectory( ${SUBDIRECTORY} )
|
add_subdirectory( ${SUBDIRECTORY} )
|
||||||
@ -57,11 +98,21 @@ function( calamares_add_module_subdirectory )
|
|||||||
if ( SKIPPED_MODULES )
|
if ( SKIPPED_MODULES )
|
||||||
set( SKIPPED_MODULES ${SKIPPED_MODULES} PARENT_SCOPE )
|
set( SKIPPED_MODULES ${SKIPPED_MODULES} PARENT_SCOPE )
|
||||||
set( MODULE_CONFIG_FILES "" )
|
set( MODULE_CONFIG_FILES "" )
|
||||||
|
else()
|
||||||
|
# The SKIPPED_MODULES may be set in the directory itself
|
||||||
|
get_directory_property( _skip DIRECTORY ${SUBDIRECTORY} DEFINITION SKIPPED_MODULES )
|
||||||
|
if ( _skip )
|
||||||
|
set( SKIPPED_MODULES ${_skip} PARENT_SCOPE )
|
||||||
|
set( MODULE_CONFIG_FILES "" )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if ( SKIPPED_MODULES )
|
||||||
|
return()
|
||||||
endif()
|
endif()
|
||||||
# ...otherwise, we look for a module.desc.
|
# ...otherwise, we look for a module.desc.
|
||||||
elseif( EXISTS "${_mod_dir}/module.desc" )
|
elseif( EXISTS "${_mod_dir}/module.desc" )
|
||||||
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
||||||
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
set( MODULE_DESTINATION ${MODULES_DIR}/${_modulename} )
|
||||||
|
|
||||||
# Read module.desc, check that the interface type is supported.
|
# Read module.desc, check that the interface type is supported.
|
||||||
#
|
#
|
||||||
@ -70,11 +121,11 @@ function( calamares_add_module_subdirectory )
|
|||||||
# _mod_testing boolean if the module should be added to the loadmodule tests
|
# _mod_testing boolean if the module should be added to the loadmodule tests
|
||||||
file(STRINGS "${_mod_dir}/module.desc" MODULE_INTERFACE REGEX "^interface")
|
file(STRINGS "${_mod_dir}/module.desc" MODULE_INTERFACE REGEX "^interface")
|
||||||
if ( MODULE_INTERFACE MATCHES "pythonqt" )
|
if ( MODULE_INTERFACE MATCHES "pythonqt" )
|
||||||
set( _mod_enabled ${WITH_PYTHONQT} )
|
set( _mod_enabled ${Calamares_WITH_PYTHONQT} )
|
||||||
set( _mod_reason "No PythonQt support" )
|
set( _mod_reason "No PythonQt support" )
|
||||||
set( _mod_testing OFF )
|
set( _mod_testing OFF )
|
||||||
elseif ( MODULE_INTERFACE MATCHES "python" )
|
elseif ( MODULE_INTERFACE MATCHES "python" )
|
||||||
set( _mod_enabled ${WITH_PYTHON} )
|
set( _mod_enabled ${Calamares_WITH_PYTHON} )
|
||||||
set( _mod_reason "No Python support" )
|
set( _mod_reason "No Python support" )
|
||||||
set( _mod_testing ON ) # Will check syntax and imports, at least
|
set( _mod_testing ON ) # Will check syntax and imports, at least
|
||||||
elseif ( MODULE_INTERFACE MATCHES "qtplugin" )
|
elseif ( MODULE_INTERFACE MATCHES "qtplugin" )
|
||||||
@ -113,7 +164,7 @@ function( calamares_add_module_subdirectory )
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${_modulename}${ColorReset}" )
|
||||||
message( " ${Green}TYPE:${ColorReset} jobmodule" )
|
message( " ${Green}TYPE:${ColorReset} jobmodule" )
|
||||||
message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" )
|
message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" )
|
||||||
if( MODULE_CONFIG_FILES )
|
if( MODULE_CONFIG_FILES )
|
||||||
@ -126,10 +177,10 @@ function( calamares_add_module_subdirectory )
|
|||||||
endif()
|
endif()
|
||||||
message( "" )
|
message( "" )
|
||||||
# We copy over the lang directory, if any
|
# We copy over the lang directory, if any
|
||||||
if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" )
|
if( IS_DIRECTORY "${_mod_dir}/lang" )
|
||||||
install_calamares_gettext_translations(
|
install_calamares_gettext_translations(
|
||||||
${SUBDIRECTORY}
|
${SUBDIRECTORY}
|
||||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang"
|
SOURCE_DIR "${_mod_dir}/lang"
|
||||||
FILENAME ${SUBDIRECTORY}.mo
|
FILENAME ${SUBDIRECTORY}.mo
|
||||||
RENAME calamares-${SUBDIRECTORY}.mo
|
RENAME calamares-${SUBDIRECTORY}.mo
|
||||||
)
|
)
|
||||||
@ -158,15 +209,78 @@ function( calamares_add_module_subdirectory )
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check that the module can be loaded. Since this calls exec(), the module
|
# Adding general tests
|
||||||
|
#
|
||||||
|
# Add a check that the module can be loaded. Since this calls exec(), the module
|
||||||
# may try to do things to the running system. Needs work to make that a
|
# may try to do things to the running system. Needs work to make that a
|
||||||
# safe thing to do.
|
# safe thing to do.
|
||||||
#
|
#
|
||||||
|
# If the module has a tests/ subdirectory with *.global and *.job
|
||||||
|
# files (YAML files holding global and job-configurations for
|
||||||
|
# testing purposes) then those files are used to drive additional
|
||||||
|
# tests. The files must be numbered (starting from 1) for this to work;
|
||||||
|
# 1.global and 1.job together make the configuration for test 1.
|
||||||
|
#
|
||||||
|
# If the module has a tests/CMakeLists.txt while it doesn't have its
|
||||||
|
# own CMakeLists.txt (e.g. a Python module), then the subdirectory
|
||||||
|
# for tests/ is added on its own.
|
||||||
|
#
|
||||||
if ( BUILD_TESTING AND _mod_enabled AND _mod_testing )
|
if ( BUILD_TESTING AND _mod_enabled AND _mod_testing )
|
||||||
add_test(
|
add_test(
|
||||||
NAME load-${SUBDIRECTORY}
|
NAME load-${SUBDIRECTORY}
|
||||||
COMMAND loadmodule ${SUBDIRECTORY}
|
COMMAND loadmodule ${SUBDIRECTORY}
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
# Try it with the tests/ configurations shipped with the module
|
||||||
|
set( _count 1 )
|
||||||
|
set( _testdir ${_mod_dir}/tests )
|
||||||
|
while ( EXISTS "${_testdir}/${_count}.global" OR EXISTS "${_testdir}/${_count}.job" )
|
||||||
|
set( _dash_g "" )
|
||||||
|
set( _dash_j "" )
|
||||||
|
if ( EXISTS "${_testdir}/${_count}.global" )
|
||||||
|
set( _dash_g -g ${_testdir}/${_count}.global )
|
||||||
|
endif()
|
||||||
|
if ( EXISTS "${_testdir}/${_count}.job" )
|
||||||
|
set( _dash_j -j ${_testdir}/${_count}.job )
|
||||||
|
endif()
|
||||||
|
add_test(
|
||||||
|
NAME load-${SUBDIRECTORY}-${_count}
|
||||||
|
COMMAND loadmodule ${_dash_g} ${_dash_j} ${SUBDIRECTORY}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
)
|
||||||
|
math( EXPR _count "${_count} + 1" )
|
||||||
|
endwhile()
|
||||||
|
if ( EXISTS ${_testdir}/CMakeTests.txt AND NOT EXISTS ${_mod_dir}/CMakeLists.txt )
|
||||||
|
include( ${_testdir}/CMakeTests.txt )
|
||||||
|
endif()
|
||||||
|
if ( PYLINT_COMMAND AND MODULE_INTERFACE MATCHES "python" )
|
||||||
|
# Python modules get an additional test via pylint; this
|
||||||
|
# needs to run at top-level because the ci/libcalamares directory
|
||||||
|
# contains API stubs.
|
||||||
|
#
|
||||||
|
# TODO: the entry point is assumed to be `main.py`, but that is
|
||||||
|
# configurable through module.desc
|
||||||
|
add_test(
|
||||||
|
NAME lint-${SUBDIRECTORY}
|
||||||
|
COMMAND env PYTHONPATH=ci: ${PYLINT_COMMAND} -E ${_mod_dir}/main.py
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function( calamares_add_module_subdirectory )
|
||||||
|
set( SUBDIRECTORY ${ARGV0} )
|
||||||
|
set( _ams_SKIP_LIST ${ARGV1} )
|
||||||
|
|
||||||
|
set( SKIPPED_MODULES "" )
|
||||||
|
_calamares_add_module_subdirectory_impl( ${SUBDIRECTORY} )
|
||||||
|
if ( SKIPPED_MODULES )
|
||||||
|
if ( _ams_SKIP_LIST )
|
||||||
|
list( APPEND ${_ams_SKIP_LIST} "${SKIPPED_MODULES}" )
|
||||||
|
set( ${_ams_SKIP_LIST} "${${_ams_SKIP_LIST}}" PARENT_SCOPE )
|
||||||
|
else()
|
||||||
|
set( SKIPPED_MODULES "${SKIPPED_MODULES}" PARENT_SCOPE )
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -1,20 +1,11 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
#
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
@ -41,6 +32,7 @@
|
|||||||
# [NO_CONFIG]
|
# [NO_CONFIG]
|
||||||
# [SHARED_LIB]
|
# [SHARED_LIB]
|
||||||
# [EMERGENCY]
|
# [EMERGENCY]
|
||||||
|
# [WEIGHT w]
|
||||||
# )
|
# )
|
||||||
#
|
#
|
||||||
# Function parameters:
|
# Function parameters:
|
||||||
@ -63,17 +55,28 @@
|
|||||||
# - EMERGENCY
|
# - EMERGENCY
|
||||||
# If this is set, the module is marked as an *emergency* module in the
|
# If this is set, the module is marked as an *emergency* module in the
|
||||||
# descriptor. See *Emergency Modules* in the module documentation.
|
# descriptor. See *Emergency Modules* in the module documentation.
|
||||||
|
# - WEIGHT
|
||||||
|
# If this is set, writes an explicit weight into the module.desc;
|
||||||
|
# module weights are used in progress reporting.
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# This function follows the global SKIP_MODULES and USE_* settings, so
|
||||||
|
# a plugin may be skipped -- then nothing will be built. In that case,
|
||||||
|
# SKIPPED_MODULES is set in the parent (i.e. caller's) scope with the
|
||||||
|
# reason why. This should rarely be a concern as AddModuleSubdirectory
|
||||||
|
# already handles skip-reasons and collects them for reporting.
|
||||||
|
|
||||||
include( CMakeParseArguments )
|
include( CMakeParseArguments )
|
||||||
|
|
||||||
include( CalamaresAddLibrary )
|
include( CalamaresAddLibrary )
|
||||||
|
include( CalamaresCheckModuleSelection )
|
||||||
include( CMakeColors )
|
include( CMakeColors )
|
||||||
|
|
||||||
function( calamares_add_plugin )
|
function( calamares_add_plugin )
|
||||||
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
||||||
set( NAME ${ARGV0} )
|
set( NAME ${ARGV0} )
|
||||||
set( options NO_CONFIG NO_INSTALL SHARED_LIB EMERGENCY )
|
set( options NO_CONFIG NO_INSTALL SHARED_LIB EMERGENCY )
|
||||||
set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES )
|
set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES WEIGHT )
|
||||||
set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS REQUIRES )
|
set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS REQUIRES )
|
||||||
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||||
set( PLUGIN_NAME ${NAME} )
|
set( PLUGIN_NAME ${NAME} )
|
||||||
@ -85,6 +88,12 @@ function( calamares_add_plugin )
|
|||||||
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
|
|
||||||
|
calamares_check_skip( ${NAME} _skip)
|
||||||
|
if ( _skip )
|
||||||
|
set( SKIPPED_MODULES "${_skip}" PARENT_SCOPE )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}" )
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}" )
|
||||||
message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" )
|
message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" )
|
||||||
message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" )
|
message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" )
|
||||||
@ -117,6 +126,15 @@ function( calamares_add_plugin )
|
|||||||
# create target name once for convenience
|
# create target name once for convenience
|
||||||
set( target "calamares_${PLUGIN_TYPE}_${PLUGIN_NAME}" )
|
set( target "calamares_${PLUGIN_TYPE}_${PLUGIN_NAME}" )
|
||||||
|
|
||||||
|
# automatic library linkage
|
||||||
|
if(PLUGIN_TYPE STREQUAL "view" OR PLUGIN_TYPE STREQUAL "viewmodule")
|
||||||
|
list(APPEND PLUGIN_LINK_PRIVATE_LIBRARIES Calamares::calamaresui)
|
||||||
|
elseif(PLUGIN_TYPE STREQUAL "job")
|
||||||
|
list(APPEND PLUGIN_LINK_PRIVATE_LIBRARIES Calamares::calamares)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unknown plugin type ${PLUGIN_TYPE}")
|
||||||
|
endif()
|
||||||
|
|
||||||
# determine target type
|
# determine target type
|
||||||
if( NOT ${PLUGIN_SHARED_LIB} )
|
if( NOT ${PLUGIN_SHARED_LIB} )
|
||||||
set( target_type "MODULE" )
|
set( target_type "MODULE" )
|
||||||
@ -181,19 +199,31 @@ function( calamares_add_plugin )
|
|||||||
if ( PLUGIN_NO_CONFIG )
|
if ( PLUGIN_NO_CONFIG )
|
||||||
file( APPEND ${_file} "noconfig: true\n" )
|
file( APPEND ${_file} "noconfig: true\n" )
|
||||||
endif()
|
endif()
|
||||||
|
if ( PLUGIN_WEIGHT )
|
||||||
|
file( APPEND ${_file} "weight: ${PLUGIN_WEIGHT}\n" )
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if ( NOT PLUGIN_NO_INSTALL )
|
if ( NOT PLUGIN_NO_INSTALL )
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE}
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE}
|
||||||
DESTINATION ${PLUGIN_DESTINATION} )
|
DESTINATION ${PLUGIN_DESTINATION} )
|
||||||
|
|
||||||
|
set( _warned_config OFF )
|
||||||
foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} )
|
foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} )
|
||||||
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
if( ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} OR INSTALL_CONFIG )
|
||||||
|
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
||||||
|
else()
|
||||||
|
message( " ${BoldYellow}Not updating${ColorReset} ${PLUGIN_CONFIG_FILE}" )
|
||||||
|
set( _warned_config ON )
|
||||||
|
endif()
|
||||||
if ( INSTALL_CONFIG )
|
if ( INSTALL_CONFIG )
|
||||||
install(
|
install(
|
||||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
||||||
DESTINATION ${PLUGIN_DATA_DESTINATION} )
|
DESTINATION ${PLUGIN_DATA_DESTINATION} )
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
if ( _warned_config )
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -1,20 +1,10 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# 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,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
@ -24,6 +14,7 @@
|
|||||||
# calamares_add_test(
|
# calamares_add_test(
|
||||||
# <NAME>
|
# <NAME>
|
||||||
# [GUI]
|
# [GUI]
|
||||||
|
# [RESOURCES FILE]
|
||||||
# SOURCES <FILE..>
|
# SOURCES <FILE..>
|
||||||
# )
|
# )
|
||||||
|
|
||||||
@ -34,25 +25,31 @@ function( calamares_add_test )
|
|||||||
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
||||||
set( NAME ${ARGV0} )
|
set( NAME ${ARGV0} )
|
||||||
set( options GUI )
|
set( options GUI )
|
||||||
|
set( oneValueArgs NAME RESOURCES )
|
||||||
set( multiValueArgs SOURCES LIBRARIES DEFINITIONS )
|
set( multiValueArgs SOURCES LIBRARIES DEFINITIONS )
|
||||||
cmake_parse_arguments( TEST "${options}" "" "${multiValueArgs}" ${ARGN} )
|
cmake_parse_arguments( TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||||
set( TEST_NAME ${NAME} )
|
set( TEST_NAME ${NAME} )
|
||||||
|
|
||||||
if( ECM_FOUND AND BUILD_TESTING )
|
if( ECM_FOUND AND BUILD_TESTING )
|
||||||
ecm_add_test(
|
ecm_add_test(
|
||||||
${TEST_SOURCES}
|
${TEST_SOURCES} ${TEST_RESOURCES}
|
||||||
TEST_NAME
|
TEST_NAME
|
||||||
${TEST_NAME}
|
${TEST_NAME}
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
calamares
|
Calamares::calamares
|
||||||
${TEST_LIBRARIES}
|
${TEST_LIBRARIES}
|
||||||
Qt5::Core
|
Qt5::Core
|
||||||
Qt5::Test
|
Qt5::Test
|
||||||
)
|
)
|
||||||
calamares_automoc( ${TEST_NAME} )
|
calamares_automoc( ${TEST_NAME} )
|
||||||
|
# We specifically pass in the source directory of the test-being-
|
||||||
|
# compiled, so that it can find test-files in that source dir.
|
||||||
target_compile_definitions( ${TEST_NAME} PRIVATE -DBUILD_AS_TEST="${CMAKE_CURRENT_SOURCE_DIR}" ${TEST_DEFINITIONS} )
|
target_compile_definitions( ${TEST_NAME} PRIVATE -DBUILD_AS_TEST="${CMAKE_CURRENT_SOURCE_DIR}" ${TEST_DEFINITIONS} )
|
||||||
if( TEST_GUI )
|
if( TEST_GUI )
|
||||||
target_link_libraries( ${TEST_NAME} calamaresui Qt5::Gui )
|
target_link_libraries( ${TEST_NAME} Calamares::calamaresui Qt5::Gui )
|
||||||
|
endif()
|
||||||
|
if( TEST_RESOURCES )
|
||||||
|
calamares_autorcc( ${TEST_NAME} ${TEST_RESOURCES} )
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -1,20 +1,10 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# 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,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
@ -22,104 +12,14 @@
|
|||||||
|
|
||||||
include( CMakeParseArguments )
|
include( CMakeParseArguments )
|
||||||
|
|
||||||
if( NOT _rcc_version_support_checked )
|
# The Gettext module is still old-fashioned, ALLCAPS variables
|
||||||
set( _rcc_version_support_checked TRUE )
|
find_package( Gettext )
|
||||||
|
set_package_properties( GETTEXT PROPERTIES
|
||||||
# Extract the executable name
|
DESCRIPTION "GNU gettext (translation) tools."
|
||||||
get_property( _rcc_executable
|
URL "https://www.gnu.org/software/gettext/"
|
||||||
TARGET ${Qt5Core_RCC_EXECUTABLE}
|
PURPOSE "Gettext is used in the translation of Python modules."
|
||||||
PROPERTY IMPORTED_LOCATION
|
TYPE REQUIRED
|
||||||
)
|
)
|
||||||
if( NOT _rcc_executable )
|
|
||||||
# Weird, probably now uses Qt5::rcc which is wrong too
|
|
||||||
set( _rcc_executable ${Qt5Core_RCC_EXECUTABLE} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Try an empty RCC file with explicit format-version
|
|
||||||
execute_process(
|
|
||||||
COMMAND echo "<RCC version='1.0'></RCC>"
|
|
||||||
COMMAND ${Qt5Core_RCC_EXECUTABLE} --format-version 1 --list -
|
|
||||||
RESULT_VARIABLE _rcc_version_rv
|
|
||||||
ERROR_VARIABLE _rcc_version_dump
|
|
||||||
)
|
|
||||||
if ( _rcc_version_rv EQUAL 0 )
|
|
||||||
# Supported: force to the reproducible version
|
|
||||||
set( _rcc_version_support --format-version 1 )
|
|
||||||
else()
|
|
||||||
# Older Qt versions (5.7, 5.8) don't support setting the
|
|
||||||
# rcc format-version, so won't be reproducible if they
|
|
||||||
# default to version 2.
|
|
||||||
set( _rcc_version_support "" )
|
|
||||||
endif()
|
|
||||||
unset( _rcc_version_rv )
|
|
||||||
unset( _rcc_version_dump )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Internal macro for adding the C++ / Qt translations to the
|
|
||||||
# build and install tree. Should be called only once, from
|
|
||||||
# src/calamares/CMakeLists.txt.
|
|
||||||
macro(add_calamares_translations language)
|
|
||||||
list( APPEND CALAMARES_LANGUAGES ${ARGV} )
|
|
||||||
|
|
||||||
set( calamares_i18n_qrc_content "<!DOCTYPE RCC><RCC version=\"1.0\">\n" )
|
|
||||||
|
|
||||||
# calamares and qt language files
|
|
||||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}<qresource prefix=\"/lang\">\n" )
|
|
||||||
foreach( lang ${CALAMARES_LANGUAGES} )
|
|
||||||
foreach( tlsource "calamares_${lang}" "tz_${lang}" )
|
|
||||||
if( EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" )
|
|
||||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}<file>${tlsource}.qm</file>\n" )
|
|
||||||
list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" )
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}</qresource>\n" )
|
|
||||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}</RCC>\n" )
|
|
||||||
|
|
||||||
file( WRITE ${CMAKE_BINARY_DIR}/lang/calamares_i18n.qrc "${calamares_i18n_qrc_content}" )
|
|
||||||
|
|
||||||
qt5_add_translation(QM_FILES ${TS_FILES})
|
|
||||||
|
|
||||||
## HACK HACK HACK - around rcc limitations to allow out of source-tree building
|
|
||||||
set( trans_file calamares_i18n )
|
|
||||||
set( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc )
|
|
||||||
set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc )
|
|
||||||
set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx )
|
|
||||||
|
|
||||||
# Copy the QRC file to the output directory
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${trans_infile}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${trans_srcfile} ${trans_infile}
|
|
||||||
MAIN_DEPENDENCY ${trans_srcfile}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Run the resource compiler (rcc_options should already be set)
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${trans_outfile}
|
|
||||||
COMMAND "${Qt5Core_RCC_EXECUTABLE}"
|
|
||||||
ARGS ${rcc_options} ${_rcc_version_support} -name ${trans_file} -o ${trans_outfile} ${trans_infile}
|
|
||||||
MAIN_DEPENDENCY ${trans_infile}
|
|
||||||
DEPENDS ${QM_FILES}
|
|
||||||
)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Internal macro for Python translations
|
|
||||||
#
|
|
||||||
# Translations of the Python modules that don't have their own
|
|
||||||
# lang/ subdirectories -- these are collected in top-level
|
|
||||||
# lang/python/<lang>/LC_MESSAGES/python.mo
|
|
||||||
macro(add_calamares_python_translations language)
|
|
||||||
set( CALAMARES_LANGUAGES "" )
|
|
||||||
list( APPEND CALAMARES_LANGUAGES ${ARGV} )
|
|
||||||
|
|
||||||
install_calamares_gettext_translations( python
|
|
||||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/lang/python
|
|
||||||
FILENAME python.mo
|
|
||||||
RENAME calamares-python.mo
|
|
||||||
)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Installs a directory containing language-code-labeled subdirectories with
|
# Installs a directory containing language-code-labeled subdirectories with
|
||||||
# gettext data into the appropriate system directory. Allows renaming the
|
# gettext data into the appropriate system directory. Allows renaming the
|
||||||
@ -151,31 +51,52 @@ function( install_calamares_gettext_translations )
|
|||||||
if( NOT TRANSLATION_RENAME )
|
if( NOT TRANSLATION_RENAME )
|
||||||
set( TRANSLATION_RENAME "${TRANSLATION_FILENAME}" )
|
set( TRANSLATION_RENAME "${TRANSLATION_FILENAME}" )
|
||||||
endif()
|
endif()
|
||||||
|
string( REGEX REPLACE ".mo$" ".po" TRANSLATION_SOURCE_FILENAME "${TRANSLATION_FILENAME}" )
|
||||||
|
|
||||||
message(STATUS "Installing gettext translations for ${TRANSLATION_NAME}")
|
if ( GETTEXT_FOUND AND GETTEXT_MSGFMT_EXECUTABLE )
|
||||||
message(STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}")
|
message( STATUS "Installing gettext translations for ${TRANSLATION_NAME}")
|
||||||
|
message( STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}")
|
||||||
|
else()
|
||||||
|
message( WARNING "Gettext translations requested for ${TRANSLATION_NAME}, but gettext was not found." )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set( TARGET_NAME calamares-gettext-translations-${NAME} )
|
||||||
|
if( NOT TARGET "${TARGET_NAME}" )
|
||||||
|
add_custom_target( "${TARGET_NAME}" ALL )
|
||||||
|
endif()
|
||||||
|
|
||||||
set( TRANSLATION_NAME "${NAME}" )
|
set( TRANSLATION_NAME "${NAME}" )
|
||||||
set( INSTALLED_TRANSLATIONS "" )
|
|
||||||
foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) # Global
|
foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) # Global
|
||||||
set( lang_mo "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_FILENAME}" )
|
string( MAKE_C_IDENTIFIER "${TARGET_NAME}-${lang}" TARGET_SUBNAME )
|
||||||
|
|
||||||
|
set( lang_po "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_SOURCE_FILENAME}" )
|
||||||
|
set( lang_mo_dir "${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES" )
|
||||||
|
set( lang_mo "${lang_mo_dir}/${TRANSLATION_RENAME}" )
|
||||||
if( lang STREQUAL "en" )
|
if( lang STREQUAL "en" )
|
||||||
message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" )
|
message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" )
|
||||||
else( EXISTS ${lang_mo} )
|
else()
|
||||||
list( APPEND INSTALLED_LANGUAGES "${lang}" )
|
# We **don't** use the gettext macro's here because the source
|
||||||
|
# structure doesn't match: we are calling this once per language
|
||||||
|
# for all of Calamares's languages, while the gettext module
|
||||||
|
# expects it to be called once, for a given language source-dir.
|
||||||
|
#
|
||||||
|
# Using any of the gettext macros just gets us multiple rules
|
||||||
|
# for python.gmo, and it wants to use msgmerge, besides, which
|
||||||
|
# doesn't fit our Transifex workflow.
|
||||||
|
make_directory( ${lang_mo_dir} )
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${lang_mo}
|
||||||
|
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
|
||||||
|
ARGS -o ${lang_mo} ${lang_po}
|
||||||
|
MAIN_DEPENDENCY ${lang_po}
|
||||||
|
)
|
||||||
|
add_custom_target( "${TARGET_SUBNAME}" DEPENDS ${lang_mo} )
|
||||||
|
add_dependencies( "${TARGET_NAME}" "${TARGET_SUBNAME}" )
|
||||||
install(
|
install(
|
||||||
FILES ${lang_mo}
|
FILES ${lang_mo}
|
||||||
DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${lang}/LC_MESSAGES/
|
DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${lang}/LC_MESSAGES/
|
||||||
RENAME ${TRANSLATION_RENAME}
|
|
||||||
)
|
)
|
||||||
# TODO: make translations available in build dir too, for
|
|
||||||
# translation when running calamares -d from builddir.
|
|
||||||
set(_build_lc ${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES/)
|
|
||||||
file(COPY ${lang_mo} DESTINATION ${_build_lc})
|
|
||||||
if (NOT TRANSLATION_FILENAME STREQUAL TRANSLATION_RENAME)
|
|
||||||
file(RENAME ${_build_lc}${TRANSLATION_FILENAME} ${_build_lc}${TRANSLATION_RENAME})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -1,34 +1,35 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
# it under the terms of the GNU General Public License as published by
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
# 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,
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0+
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
# Helper function for doing automoc on a target, and autoui on a .ui file.
|
# Helper function for doing automoc, autouic, autorcc on targets,
|
||||||
|
# and on the corresponding .ui or .rcc files.
|
||||||
#
|
#
|
||||||
# Sets AUTOMOC TRUE for a target.
|
# calamares_automoc(target)
|
||||||
|
# Sets AUTOMOC TRUE for a target.
|
||||||
#
|
#
|
||||||
# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that
|
# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that
|
||||||
# as well to set options passed to MOC. This can be used to add
|
# as well to set options passed to MOC. This can be used to add
|
||||||
# libcalamares/utils/moc-warnings.h file to the moc, which in turn
|
# libcalamares/utils/moc-warnings.h file to the moc, which in turn
|
||||||
# reduces compiler warnings in generated MOC code.
|
# reduces compiler warnings in generated MOC code.
|
||||||
#
|
#
|
||||||
# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that
|
# calamares_autouic(target [uifile ..])
|
||||||
# to the options passed to uic.
|
# Sets AUTOUIC TRUE for a target.
|
||||||
|
#
|
||||||
|
# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that
|
||||||
|
# to the options passed to uic for each of the named uifiles.
|
||||||
|
#
|
||||||
|
# calamares_autorcc(target [rcfile ..])
|
||||||
|
# Sets AUTOUIC TRUE for a target.
|
||||||
|
#
|
||||||
|
# If the global variable CALAMARES_AUTORCC_OPTIONS is set, adds that
|
||||||
|
# to the options passed to rcc for each of the named rcfiles.
|
||||||
|
|
||||||
function(calamares_automoc TARGET)
|
function(calamares_automoc TARGET)
|
||||||
set_target_properties( ${TARGET} PROPERTIES AUTOMOC TRUE )
|
set_target_properties( ${TARGET} PROPERTIES AUTOMOC TRUE )
|
||||||
@ -45,3 +46,12 @@ function(calamares_autouic TARGET)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(calamares_autorcc TARGET)
|
||||||
|
set_target_properties( ${TARGET} PROPERTIES AUTORCC TRUE )
|
||||||
|
if ( CALAMARES_AUTORCC_OPTIONS )
|
||||||
|
foreach(S ${ARGN})
|
||||||
|
set_property(SOURCE ${S} PROPERTY AUTORCC_OPTIONS "${CALAMARES_AUTORCC_OPTIONS}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
116
CMakeModules/CalamaresCheckModuleSelection.cmake
Normal file
116
CMakeModules/CalamaresCheckModuleSelection.cmake
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# This module implements the "skip modules" part of configuring
|
||||||
|
# the Calamares repository or an external-modules repository.
|
||||||
|
#
|
||||||
|
# It should not be necessary to include() this module explicitly,
|
||||||
|
# since both AddPlugin and AddModuleSubdirectory do so implicitly.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# # Usage
|
||||||
|
#
|
||||||
|
# The public API is two functions:
|
||||||
|
#
|
||||||
|
# - calamares_skip_module(reason)
|
||||||
|
# A C++ module (or any that uses CMake) can call this macro to
|
||||||
|
# add *reason* to the list of skipped modules. Typically a module
|
||||||
|
# will pass in "modulename (why)" so that it is clear **which**
|
||||||
|
# module is skipped. This macro should be called at the top-level
|
||||||
|
# of a module's CMakeLists.txt and the module should then **not**
|
||||||
|
# call calamares_add_plugin().
|
||||||
|
# - calamares_explain_skipped_modules(list...)
|
||||||
|
# This will print out all the module reasons (see above) that have
|
||||||
|
# been added to the given *listvar*. When AddModuleSubdirectory is
|
||||||
|
# used as the mechanism to add all the subdirectories in the repository
|
||||||
|
# that contain modules, with a consistent *listvar* setting,
|
||||||
|
# this will show all the modules that have been skipped.
|
||||||
|
#
|
||||||
|
# The internal API is one function:
|
||||||
|
#
|
||||||
|
# - calamares_check_skip(modulename outvar)
|
||||||
|
# Checks if the *modulename* has been listed in the global SKIP_MODULES
|
||||||
|
# variable (to skip specifically-named modules) or if there is a USE_*
|
||||||
|
# setting applicable to the module. If the module is skipped for this
|
||||||
|
# reason, a suitable entry is added to *outvar* as if
|
||||||
|
# calamares_skip_module() had been called.
|
||||||
|
#
|
||||||
|
# Best practice is to pick a variable to collect all of the skipped
|
||||||
|
# modules, and to pass the name of that variable to AddModuleSubdirectory
|
||||||
|
# in each call. After all subdirectories have been added, call
|
||||||
|
# calamares_explain_skipped_modules() with the value of that variable.
|
||||||
|
|
||||||
|
|
||||||
|
# Convenience function to indicate that a module has been skipped
|
||||||
|
# (optionally also why). Call this in the module's CMakeLists.txt
|
||||||
|
macro( calamares_skip_module )
|
||||||
|
set( SKIPPED_MODULES ${SKIPPED_MODULES} ${ARGV} PARENT_SCOPE )
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
function( calamares_explain_skipped_modules )
|
||||||
|
if ( ARGN )
|
||||||
|
message( "${ColorReset}-- Skipped modules:" )
|
||||||
|
foreach( SUBDIRECTORY ${ARGN} )
|
||||||
|
message( "${ColorReset}-- Skipped ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
||||||
|
endforeach()
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Globally, SKIP_MODULES and USE_* affect what modules are built.
|
||||||
|
# Check if *modulename* should be skipped, and if so, set *outvar* to
|
||||||
|
# a human-readable reason for skipping it.
|
||||||
|
function( _calamares_check_skip_impl modulename outvar )
|
||||||
|
# Globally-defined SKIP_MODULES may be space- or semicolon- separated
|
||||||
|
# so convert it to a list-variable.
|
||||||
|
string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" )
|
||||||
|
|
||||||
|
list( FIND SKIP_LIST "${modulename}" DO_SKIP )
|
||||||
|
if( NOT DO_SKIP EQUAL -1 )
|
||||||
|
set( ${outvar} "user request" PARENT_SCOPE )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Not skipped by the global check, see if it has an applicable USE_*
|
||||||
|
if( "${modulename}" MATCHES "^[a-zA-Z0-9_]+-" )
|
||||||
|
# Split the name into <category>-<implementation>
|
||||||
|
string( REGEX REPLACE "-.*" "" _category "${modulename}" )
|
||||||
|
string( REGEX REPLACE "^[^-]+-" "" _implementation "${modulename}" )
|
||||||
|
else()
|
||||||
|
# Not a module to which USE_* applies
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if( "${USE_${_category}}" STREQUAL "none" )
|
||||||
|
set( ${outvar} "category ${_category} disabled" PARENT_SCOPE )
|
||||||
|
return()
|
||||||
|
elseif( "${USE_${_category}}" STREQUAL "" )
|
||||||
|
# Category not set at all or nonexistent
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if ( "${USE_${_category}}" STREQUAL "${_implementation}" )
|
||||||
|
# Matches, so accept this module
|
||||||
|
else()
|
||||||
|
set( ${outvar} "category ${_category} selects ${USE_${_category}}" PARENT_SCOPE )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# This is the public API;it calls the _impl version so that there
|
||||||
|
# is an extra intermediate scope for the subdirectory to write results into.
|
||||||
|
function( calamares_check_skip modulename outvar )
|
||||||
|
set( _skip "" )
|
||||||
|
_calamares_check_skip_impl( "${modulename}" _skip )
|
||||||
|
if ( _skip )
|
||||||
|
message( "${ColorReset}-- Skipping module ${BoldRed}${modulename} (${_skip})${ColorReset}." )
|
||||||
|
message( "" )
|
||||||
|
set( ${outvar} "${modulename} (${_skip})" PARENT_SCOPE )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
75
CMakeModules/ExtendedVersion.cmake
Normal file
75
CMakeModules/ExtendedVersion.cmake
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# This file defines one function for extending a VERSION-like value
|
||||||
|
# with date and git information (if desired).
|
||||||
|
#
|
||||||
|
# - extend_version( version-string short_only short_var long_var )
|
||||||
|
# Calling this function will copy *version-string* (which would typically
|
||||||
|
# be a semver-style string, like "3.2.40") into the variable *short_var*.
|
||||||
|
# If *short_only* is true, then:
|
||||||
|
# - the short version is also copied into the variable *long_var*,
|
||||||
|
# If *short_only* is false, then:
|
||||||
|
# - the *version-string* plus date and git information, is copied
|
||||||
|
# into the varialbe *long_var*, in the format {version}-{date}-{hash}
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
function( get_git_version_info out_var )
|
||||||
|
set(CMAKE_VERSION_SOURCE "")
|
||||||
|
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
|
||||||
|
find_program(GIT_EXECUTABLE NAMES git git.cmd)
|
||||||
|
mark_as_advanced(GIT_EXECUTABLE)
|
||||||
|
if(GIT_EXECUTABLE)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=8 HEAD
|
||||||
|
OUTPUT_VARIABLE head
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
if(head)
|
||||||
|
set(CMAKE_VERSION_SOURCE "${head}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
|
||||||
|
OUTPUT_VARIABLE dirty
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
if(dirty)
|
||||||
|
set(CMAKE_VERSION_SOURCE "${CMAKE_VERSION_SOURCE}-dirty")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
set( ${out_var} "${CMAKE_VERSION_SOURCE}" PARENT_SCOPE )
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function( extend_version version short_only short_var long_var )
|
||||||
|
set( ${short_var} "${version}" PARENT_SCOPE )
|
||||||
|
set( _v "${version}" )
|
||||||
|
if ( NOT short_only )
|
||||||
|
# Additional info for non-release builds which want "long" version info
|
||||||
|
# with date and git information (commit, dirty status). That is used only
|
||||||
|
# by CalamaresVersionX.h, which is included by consumers that need a full
|
||||||
|
# version number with all that information; normal consumers can include
|
||||||
|
# CalamaresVersion.h with more stable numbers.
|
||||||
|
string( TIMESTAMP CALAMARES_VERSION_DATE "%Y%m%d" )
|
||||||
|
if( CALAMARES_VERSION_DATE GREATER 0 )
|
||||||
|
set( _v ${_v}.${CALAMARES_VERSION_DATE} )
|
||||||
|
endif()
|
||||||
|
get_git_version_info( _gitv )
|
||||||
|
if( _gitv )
|
||||||
|
set( _v "${_v}-${_gitv}" )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
set( ${long_var} "${_v}" PARENT_SCOPE )
|
||||||
|
endfunction()
|
@ -1,3 +1,11 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
# - Find libcrypt
|
# - Find libcrypt
|
||||||
# Find the libcrypt includes and the libcrypt libraries
|
# Find the libcrypt includes and the libcrypt libraries
|
||||||
# This module defines
|
# This module defines
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
# Copyright (C) 2008,2010,2011 by Volker Lanz <vl@fidra.de>
|
# SPDX-FileCopyrightText: 2008,2010,2011 by Volker Lanz <vl@fidra.de>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions
|
# modification, are permitted provided that the following conditions
|
||||||
@ -44,7 +45,7 @@ else (LIBPARTED_FS_RESIZE_LIBRARY)
|
|||||||
set(LIBPARTED_LIBS ${LIBPARTED_LIBRARY})
|
set(LIBPARTED_LIBS ${LIBPARTED_LIBRARY})
|
||||||
endif (LIBPARTED_FS_RESIZE_LIBRARY)
|
endif (LIBPARTED_FS_RESIZE_LIBRARY)
|
||||||
|
|
||||||
# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so
|
# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so
|
||||||
# undo that
|
# undo that
|
||||||
unset(CMAKE_C_FLAGS)
|
unset(CMAKE_C_FLAGS)
|
||||||
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
# Locate libpwquality
|
# Locate libpwquality
|
||||||
# https://github.com/libpwquality/libpwquality
|
# https://github.com/libpwquality/libpwquality
|
||||||
#
|
#
|
||||||
@ -6,10 +13,16 @@
|
|||||||
# LibPWQuality_LIBRARIES, where to find the library
|
# LibPWQuality_LIBRARIES, where to find the library
|
||||||
# LibPWQuality_INCLUDE_DIRS, where to find pwquality.h
|
# LibPWQuality_INCLUDE_DIRS, where to find pwquality.h
|
||||||
#
|
#
|
||||||
include(FindPkgConfig)
|
find_package(PkgConfig)
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
pkg_search_module(pc_pwquality QUIET pwquality)
|
if(PkgConfig_FOUND)
|
||||||
|
pkg_search_module(pc_pwquality QUIET pwquality)
|
||||||
|
else()
|
||||||
|
# It's just possible that the find_path and find_library will
|
||||||
|
# find it **anyway**, so let's pretend it was there.
|
||||||
|
set(pc_pwquality_FOUND ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
find_path(LibPWQuality_INCLUDE_DIR
|
find_path(LibPWQuality_INCLUDE_DIR
|
||||||
NAMES pwquality.h
|
NAMES pwquality.h
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2016 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
# Find PythonQt
|
# Find PythonQt
|
||||||
#
|
#
|
||||||
# Sets PYTHONQT_FOUND, PYTHONQT_INCLUDE_DIR, PYTHONQT_LIBRARY, PYTHONQT_LIBRARIES
|
# Sets PYTHONQT_FOUND, PYTHONQT_INCLUDE_DIR, PYTHONQT_LIBRARY, PYTHONQT_LIBRARIES
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
# Locate yaml-cpp
|
# Locate yaml-cpp
|
||||||
#
|
#
|
||||||
# This module defines
|
# This module defines
|
||||||
@ -5,7 +13,7 @@
|
|||||||
# YAMLCPP_LIBRARY, where to find yaml-cpp
|
# YAMLCPP_LIBRARY, where to find yaml-cpp
|
||||||
# YAMLCPP_INCLUDE_DIR, where to find yaml.h
|
# YAMLCPP_INCLUDE_DIR, where to find yaml.h
|
||||||
# There is also one IMPORTED library target,
|
# There is also one IMPORTED library target,
|
||||||
# yamlcpp
|
# yamlcpp::yamlcpp
|
||||||
#
|
#
|
||||||
# By default, the dynamic libraries of yaml-cpp will be found. To find the static ones instead,
|
# By default, the dynamic libraries of yaml-cpp will be found. To find the static ones instead,
|
||||||
# you must set the YAMLCPP_STATIC_LIBRARY variable to TRUE before calling find_package(YamlCpp ...).
|
# you must set the YAMLCPP_STATIC_LIBRARY variable to TRUE before calling find_package(YamlCpp ...).
|
||||||
@ -13,6 +21,10 @@
|
|||||||
# If yaml-cpp is not installed in a standard path, you can use the YAMLCPP_DIR CMake variable
|
# If yaml-cpp is not installed in a standard path, you can use the YAMLCPP_DIR CMake variable
|
||||||
# to tell CMake where yaml-cpp is.
|
# to tell CMake where yaml-cpp is.
|
||||||
|
|
||||||
|
if(TARGET yamlcpp::yamlcpp)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
# attempt to find static library first if this is set
|
# attempt to find static library first if this is set
|
||||||
if(YAMLCPP_STATIC_LIBRARY)
|
if(YAMLCPP_STATIC_LIBRARY)
|
||||||
set(YAMLCPP_STATIC libyaml-cpp.a)
|
set(YAMLCPP_STATIC libyaml-cpp.a)
|
||||||
@ -53,9 +65,9 @@ mark_as_advanced(YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
|||||||
|
|
||||||
# Add an imported target
|
# Add an imported target
|
||||||
if( YAMLCPP_LIBRARY )
|
if( YAMLCPP_LIBRARY )
|
||||||
add_library( yamlcpp UNKNOWN IMPORTED )
|
add_library( yamlcpp::yamlcpp UNKNOWN IMPORTED )
|
||||||
set_property( TARGET yamlcpp PROPERTY IMPORTED_LOCATION ${YAMLCPP_LIBRARY} )
|
set_property( TARGET yamlcpp::yamlcpp PROPERTY IMPORTED_LOCATION ${YAMLCPP_LIBRARY} )
|
||||||
if ( YAMLCPP_INCLUDE_DIR )
|
if ( YAMLCPP_INCLUDE_DIR )
|
||||||
set_property( TARGET yamlcpp PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${YAMLCPP_INCLUDE_DIR} )
|
set_property( TARGET yamlcpp::yamlcpp PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${YAMLCPP_INCLUDE_DIR} )
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
# Shared CMake core for finding KPMCore
|
|
||||||
#
|
|
||||||
# This is wrapped into a CMake include file because there's a bunch of
|
|
||||||
# pre-requisites that need searching for before looking for KPMCore.
|
|
||||||
# If you just do find_package( KPMCore ) without finding the things
|
|
||||||
# it links against first, you get CMake errors.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
find_package(ECM 5.10.0 REQUIRED NO_MODULE)
|
|
||||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
|
|
||||||
|
|
||||||
include(KDEInstallDirs)
|
|
||||||
include(GenerateExportHeader)
|
|
||||||
find_package( KF5 REQUIRED CoreAddons )
|
|
||||||
find_package( KF5 REQUIRED Config I18n Service WidgetsAddons )
|
|
||||||
|
|
||||||
find_package( KPMcore 3.2 REQUIRED )
|
|
39
CMakeModules/KPMcoreHelper.cmake
Normal file
39
CMakeModules/KPMcoreHelper.cmake
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# Finds KPMcore and consistently sets API flags based on the version.
|
||||||
|
#
|
||||||
|
if ( NOT KPMcore_searched_for )
|
||||||
|
set( KPMcore_searched_for TRUE )
|
||||||
|
|
||||||
|
find_package( KPMcore 3.3 )
|
||||||
|
set_package_properties(
|
||||||
|
KPMcore PROPERTIES
|
||||||
|
URL "https://invent.kde.org/kde/kpmcore"
|
||||||
|
DESCRIPTION "KDE Partitioning library"
|
||||||
|
TYPE RECOMMENDED
|
||||||
|
PURPOSE "For disk partitioning support"
|
||||||
|
)
|
||||||
|
|
||||||
|
if( KPMcore_FOUND )
|
||||||
|
set( KPMcore_API_DEFINITIONS "" )
|
||||||
|
if( KPMcore_VERSION VERSION_GREATER "3.3.70" AND KPMcore_VERSION VERSION_LESS "4.0" )
|
||||||
|
message( FATAL_ERROR "KPMCore beta versions ${KPMcore_VERSION} not supported" )
|
||||||
|
endif()
|
||||||
|
if ( KPMcore_VERSION VERSION_GREATER "3.3.0")
|
||||||
|
list( APPEND KPMcore_API_DEFINITIONS WITH_KPMCORE331API) # kpmcore > 3.3.0 with deprecations
|
||||||
|
endif()
|
||||||
|
if ( KPMcore_VERSION VERSION_GREATER_EQUAL "4.0")
|
||||||
|
list( APPEND KPMcore_API_DEFINITIONS WITH_KPMCORE4API) # kpmcore 4 with new API
|
||||||
|
endif()
|
||||||
|
if( KPMcore_VERSION VERSION_GREATER_EQUAL "4.2" )
|
||||||
|
list( APPEND KPMcore_API_DEFINITIONS WITH_KPMCORE42API) # kpmcore 4.2 with new API
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set( KPMcore_API_DEFINITIONS WITHOUT_KPMcore )
|
||||||
|
endif()
|
||||||
|
endif()
|
121
CONTRIBUTING.md
Normal file
121
CONTRIBUTING.md
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
<!-- SPDX-FileCopyrightText: no
|
||||||
|
SPDX-License-Identifier: CC0-1.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Contributing to Calamares
|
||||||
|
|
||||||
|
Welcome to Calamares! We're happy that you would like to add
|
||||||
|
something to Calamares. This contribution guide should help you
|
||||||
|
get started. The guide is not exhaustive: most of it points
|
||||||
|
to other documents that you will need.
|
||||||
|
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
The Calamares community -- of developers, translators, and downstream (distro) users --
|
||||||
|
aims to be courteous, professional, and inclusive. Harrassment, discriminatory
|
||||||
|
statements and abuse are not tolerated. In general, we apply the
|
||||||
|
[KDE Code of Conduct](https://www.kde.org/code-of-conduct/) and the
|
||||||
|
[GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct) (the
|
||||||
|
rules of decent behavior in both communities are pretty much the same).
|
||||||
|
|
||||||
|
> See the [CoC section on the wiki](https://github.com/calamares/calamares/wiki#code-of-conduct)
|
||||||
|
> for a longer text. To report a problem, please contact the maintainer,
|
||||||
|
> Adriaan de Groot, or the KDE Community Working Group.
|
||||||
|
|
||||||
|
|
||||||
|
## Join the Conversation
|
||||||
|
|
||||||
|
GitHub Issues are **one** place for discussing Calamares if there are concrete
|
||||||
|
problems or a new feature to discuss.
|
||||||
|
|
||||||
|
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
|
||||||
|
room, `#calamares:kde.org`. The conversation is bridged with IRC
|
||||||
|
on [Libera.Chat](https://libera.chat/).
|
||||||
|
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.
|
||||||
|
|
||||||
|
* [![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
|
||||||
|
|
||||||
|
Pull Requests are welcome!
|
||||||
|
|
||||||
|
It is often a good idea to start a Pull Request early, with just work-in-progress,
|
||||||
|
so that the overall approach can be discussed before you put a lot of work
|
||||||
|
into something. Or file an issue describing what you would like to do.
|
||||||
|
|
||||||
|
If you are writing code, stick to the existing coding style and apply
|
||||||
|
the coding-style tool before you commit. It's not my favorite style,
|
||||||
|
but at least all of Calamares is consistent and the tool helps it
|
||||||
|
stay that way.
|
||||||
|
|
||||||
|
If you are writing documentation, use *en_US* spelling.
|
||||||
|
|
||||||
|
If you are doing cool stuff, let us know (on IRC or through issues).
|
||||||
|
|
||||||
|
**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
|
||||||
|
new things, it's best for the whole Calamares-using-community
|
||||||
|
to build new things that are configurable and applicable to other
|
||||||
|
distributions than your own. So keep other folk in mind. There is
|
||||||
|
also the [extensions](https://github.com/calamares/calamares-extensions)
|
||||||
|
repository for somewhat-more-specialized modules and examples.
|
||||||
|
|
||||||
|
|
||||||
|
## Building Calamares
|
||||||
|
|
||||||
|
Up to date
|
||||||
|
[building-Calamares](https://github.com/calamares/calamares/wiki/Develop-Guide)
|
||||||
|
instructions are on the wiki.
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
Main:
|
||||||
|
* Compiler with C++17 support: GCC >= 7 or Clang >= 5
|
||||||
|
* CMake >= 3.3
|
||||||
|
* Qt >= 5.9
|
||||||
|
* yaml-cpp >= 0.5.1
|
||||||
|
* Python >= 3.3 (required for some modules)
|
||||||
|
* Boost.Python >= 1.55.0 (required for some modules)
|
||||||
|
* KDE extra-cmake-modules >= 5.18 (recommended; required for some modules;
|
||||||
|
required for some tests)
|
||||||
|
* KDE Frameworks KCoreAddons (>= 5.58 recommended)
|
||||||
|
* PythonQt (optional, deprecated)
|
||||||
|
|
||||||
|
Individual modules may have their own requirements;
|
||||||
|
these are listed in CMake output.
|
||||||
|
Particular requirements (not complete):
|
||||||
|
|
||||||
|
* *fsresizer* KPMCore >= 3.3 (>= 4.2 recommended)
|
||||||
|
* *partition* KPMCore >= 3.3 (>= 4.2 recommended)
|
||||||
|
* *users* LibPWQuality (optional)
|
||||||
|
|
||||||
|
|
||||||
|
## Configuring and Deploying Calamares
|
||||||
|
|
||||||
|
[Deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
|
||||||
|
instructions are on the wiki.
|
||||||
|
|
||||||
|
|
||||||
|
## Translating Calamares
|
||||||
|
|
||||||
|
Calamares translations are done on Transifex.
|
||||||
|
The [translator's guide](https://github.com/calamares/calamares/wiki/Translate-Guide)
|
||||||
|
on the wiki explains how to get involved there.
|
||||||
|
|
||||||
|
|
||||||
|
## Testing Calamares
|
||||||
|
|
||||||
|
There is a [testing guide](https://github.com/calamares/calamares/wiki/Test-Guide)
|
||||||
|
on the wiki. It is possible to test most parts of Calamares in isolation,
|
||||||
|
but the real proof of the pudding comes with an actual installation
|
||||||
|
of *some* distro using Calamares.
|
||||||
|
|
||||||
|
The UI components should get some specific usability testing instructions soon.
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
set(CALAMARES_INCLUDE_DIRS
|
|
||||||
"@PROJECT_SOURCE_DIR@/src/libcalamares"
|
|
||||||
"@PROJECT_BINARY_DIR@/src/libcalamares"
|
|
||||||
)
|
|
@ -1,32 +1,91 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
# Note that Calamares itself is GPL-3.0-or-later: the above license
|
||||||
|
# applies to **this** CMake file.
|
||||||
|
#
|
||||||
# Config file for the Calamares package
|
# Config file for the Calamares package
|
||||||
#
|
#
|
||||||
# It defines the following variables
|
# The following IMPORTED targets are defined:
|
||||||
# CALAMARES_INCLUDE_DIRS - include directories for Calamares
|
# - Calamares::calamares - the core library
|
||||||
# CALAMARES_LIBRARIES - libraries to link against
|
# - Calamares::calamaresui - the UI (and QML) library
|
||||||
# CALAMARES_USE_FILE - name of a convenience include
|
|
||||||
# CALAMARES_APPLICATION_NAME - human-readable application name
|
|
||||||
#
|
|
||||||
# Typical use is:
|
|
||||||
#
|
|
||||||
# find_package(Calamares REQUIRED)
|
|
||||||
# include("${CALAMARES_USE_FILE}")
|
|
||||||
#
|
#
|
||||||
|
# For legacy use it defines the following variables:
|
||||||
|
# - Calamares_INCLUDE_DIRS - include directories for Calamares
|
||||||
|
# - Calamares_LIB_DIRS - library directories
|
||||||
|
# - Calamares_LIBRARIES - libraries to link against
|
||||||
|
|
||||||
# Compute paths
|
@PACKAGE_INIT@
|
||||||
get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
|
||||||
if(EXISTS "${CALAMARES_CMAKE_DIR}/CMakeCache.txt")
|
### Versioning and IMPORTED targets
|
||||||
# In build tree
|
#
|
||||||
include("${CALAMARES_CMAKE_DIR}/CalamaresBuildTreeSettings.cmake")
|
#
|
||||||
else()
|
include(${CMAKE_CURRENT_LIST_DIR}/CalamaresConfigVersion.cmake)
|
||||||
set(CALAMARES_INCLUDE_DIRS "${CALAMARES_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@/libcalamares")
|
include(${CMAKE_CURRENT_LIST_DIR}/CalamaresTargets.cmake)
|
||||||
|
if (NOT TARGET Calamares::calamares OR NOT TARGET Calamares::calamaresui)
|
||||||
|
message(FATAL_ERROR "Calamares found with missing CMake targets")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Our library dependencies (contains definitions for IMPORTED targets)
|
# Need various CMake files that are installed alongside this one.
|
||||||
include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake")
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
# These are IMPORTED targets created by CalamaresLibraryDepends.cmake
|
### Dependencies
|
||||||
set(CALAMARES_LIBRARIES calamares)
|
#
|
||||||
|
# The libraries can depend on a variety of Qt and KDE Frameworks
|
||||||
|
# components, so accumulate them and find (just once).
|
||||||
|
#
|
||||||
|
macro(accumulate_deps outvar target namespace)
|
||||||
|
string(LENGTH ${namespace} _nslen)
|
||||||
|
get_target_property(_libs ${target} INTERFACE_LINK_LIBRARIES)
|
||||||
|
foreach(_lib ${_libs})
|
||||||
|
if (_lib MATCHES ^${namespace})
|
||||||
|
string(SUBSTRING ${_lib} ${_nslen} -1 _component)
|
||||||
|
list(APPEND ${outvar} ${_component})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
# Convenience variables
|
# Qt5 infrastructure for translations is required
|
||||||
set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake")
|
set(qt5_required Core Widgets LinguistTools)
|
||||||
set(CALAMARES_APPLICATION_NAME "Calamares")
|
accumulate_deps(qt5_required Calamares::calamares Qt5::)
|
||||||
|
accumulate_deps(qt5_required Calamares::calamaresui Qt5::)
|
||||||
|
find_package(Qt5 CONFIG REQUIRED ${qt5_required})
|
||||||
|
|
||||||
|
set(kf5_required "")
|
||||||
|
accumulate_deps(kf5_required Calamares::calamares KF5::)
|
||||||
|
accumulate_deps(kf5_required Calamares::calamaresui KF5::)
|
||||||
|
if(kf5_required)
|
||||||
|
find_package(ECM ${ECM_VERSION} NO_MODULE)
|
||||||
|
if( ECM_FOUND )
|
||||||
|
list(INSERT CMAKE_MODULE_PATH 0 ${ECM_MODULE_PATH})
|
||||||
|
find_package(KF5 REQUIRED COMPONENTS ${kf5_required})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(YAMLCPP REQUIRED)
|
||||||
|
|
||||||
|
### Legacy support
|
||||||
|
#
|
||||||
|
#
|
||||||
|
set(Calamares_LIB_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
|
||||||
|
set(Calamares_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
|
||||||
|
set(Calamares_LIBRARIES Calamares::calamares)
|
||||||
|
|
||||||
|
### CMake support
|
||||||
|
#
|
||||||
|
#
|
||||||
|
include(CalamaresAddBrandingSubdirectory)
|
||||||
|
include(CalamaresAddLibrary)
|
||||||
|
include(CalamaresAddModuleSubdirectory)
|
||||||
|
include(CalamaresAddPlugin)
|
||||||
|
|
||||||
|
# These are feature-settings that affect consumers of Calamares
|
||||||
|
# libraries as well; without Python-support in the libs, for instance,
|
||||||
|
# there's no point in having a Python plugin.
|
||||||
|
#
|
||||||
|
# This list should match the one in libcalamares/CalamaresConfig.h,
|
||||||
|
# which is the C++-language side of the same configuration.
|
||||||
|
set(Calamares_WITH_PYTHON @WITH_PYTHON@)
|
||||||
|
set(Calamares_WITH_PYTHONQT @WITH_PYTHONQT@)
|
||||||
|
set(Calamares_WITH_QML @WITH_QML@)
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
set(PACKAGE_VERSION "@CALAMARES_VERSION@")
|
|
||||||
|
|
||||||
# Check whether the requested PACKAGE_FIND_VERSION is compatible
|
|
||||||
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
|
|
||||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
||||||
else()
|
|
||||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
|
||||||
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
|
|
||||||
set(PACKAGE_VERSION_EXACT TRUE)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
# A setup-cmake-things-for-Calamares module.
|
|
||||||
#
|
|
||||||
# This module handles looking for dependencies and including
|
|
||||||
# all of the Calamares macro modules, so that you can focus
|
|
||||||
# on just using the macros to build Calamares modules.
|
|
||||||
# Typical use looks like this:
|
|
||||||
#
|
|
||||||
# ```
|
|
||||||
# find_package( Calamares REQUIRED )
|
|
||||||
# include( "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake" )
|
|
||||||
# ```
|
|
||||||
#
|
|
||||||
# The first CMake command finds Calamares (which will contain
|
|
||||||
# this file), then adds the found location to the search path,
|
|
||||||
# and then includes this file. After that, you can use
|
|
||||||
# Calamares module and plugin macros.
|
|
||||||
|
|
||||||
if( NOT CALAMARES_CMAKE_DIR )
|
|
||||||
message( FATAL_ERROR "Use find_package(Calamares) first." )
|
|
||||||
endif()
|
|
||||||
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} )
|
|
||||||
|
|
||||||
find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools )
|
|
||||||
|
|
||||||
include( CalamaresAddLibrary )
|
|
||||||
include( CalamaresAddModuleSubdirectory )
|
|
||||||
include( CalamaresAddPlugin )
|
|
||||||
include( CalamaresAddBrandingSubdirectory )
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
|||||||
FROM kdeneon/all:user
|
|
||||||
RUN sudo apt-get update && sudo 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 os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools
|
|
24
LICENSES/BSD-2-Clause.txt
Normal file
24
LICENSES/BSD-2-Clause.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
Copyright 2019 Adriaan de Groot <groot@kde.org>
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,49 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2017 The Qt Company Ltd.
|
|
||||||
** Contact: https://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the examples of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:BSD$
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and The Qt Company. For licensing terms
|
|
||||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
||||||
** information use the contact form at https://www.qt.io/contact-us.
|
|
||||||
**
|
|
||||||
** BSD License Usage
|
|
||||||
** Alternatively, you may use this file under the terms of the BSD license
|
|
||||||
** as follows:
|
|
||||||
**
|
|
||||||
** "Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions are
|
|
||||||
** met:
|
|
||||||
** * Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** * Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in
|
|
||||||
** the documentation and/or other materials provided with the
|
|
||||||
** distribution.
|
|
||||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
|
||||||
** contributors may be used to endorse or promote products derived
|
|
||||||
** from this software without specific prior written permission.
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
324
LICENSES/CC-BY-4.0.txt
Normal file
324
LICENSES/CC-BY-4.0.txt
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
Creative Commons Attribution 4.0 International Creative Commons Corporation
|
||||||
|
("Creative Commons") is not a law firm and does not provide legal services
|
||||||
|
or legal advice. Distribution of Creative Commons public licenses does not
|
||||||
|
create a lawyer-client or other relationship. Creative Commons makes its licenses
|
||||||
|
and related information available on an "as-is" basis. Creative Commons gives
|
||||||
|
no warranties regarding its licenses, any material licensed under their terms
|
||||||
|
and conditions, or any related information. Creative Commons disclaims all
|
||||||
|
liability for damages resulting from their use to the fullest extent possible.
|
||||||
|
|
||||||
|
Using Creative Commons Public Licenses
|
||||||
|
|
||||||
|
Creative Commons public licenses provide a standard set of terms and conditions
|
||||||
|
that creators and other rights holders may use to share original works of
|
||||||
|
authorship and other material subject to copyright and certain other rights
|
||||||
|
specified in the public license below. The following considerations are for
|
||||||
|
informational purposes only, are not exhaustive, and do not form part of our
|
||||||
|
licenses.
|
||||||
|
|
||||||
|
Considerations for licensors: Our public licenses are intended for use by
|
||||||
|
those authorized to give the public permission to use material in ways otherwise
|
||||||
|
restricted by copyright and certain other rights. Our licenses are irrevocable.
|
||||||
|
Licensors should read and understand the terms and conditions of the license
|
||||||
|
they choose before applying it. Licensors should also secure all rights necessary
|
||||||
|
before applying our licenses so that the public can reuse the material as
|
||||||
|
expected. Licensors should clearly mark any material not subject to the license.
|
||||||
|
This includes other CC-licensed material, or material used under an exception
|
||||||
|
or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
|
Considerations for the public: By using one of our public licenses, a licensor
|
||||||
|
grants the public permission to use the licensed material under specified
|
||||||
|
terms and conditions. If the licensor's permission is not necessary for any
|
||||||
|
reason–for example, because of any applicable exception or limitation to copyright–then
|
||||||
|
that use is not regulated by the license. Our licenses grant only permissions
|
||||||
|
under copyright and certain other rights that a licensor has authority to
|
||||||
|
grant. Use of the licensed material may still be restricted for other reasons,
|
||||||
|
including because others have copyright or other rights in the material. A
|
||||||
|
licensor may make special requests, such as asking that all changes be marked
|
||||||
|
or described. Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More considerations for the public
|
||||||
|
: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution
|
||||||
|
4.0 International Public License
|
||||||
|
|
||||||
|
By exercising the Licensed Rights (defined below), You accept and agree to
|
||||||
|
be bound by the terms and conditions of this Creative Commons Attribution
|
||||||
|
4.0 International Public License ("Public License"). To the extent this Public
|
||||||
|
License may be interpreted as a contract, You are granted the Licensed Rights
|
||||||
|
in consideration of Your acceptance of these terms and conditions, and the
|
||||||
|
Licensor grants You such rights in consideration of benefits the Licensor
|
||||||
|
receives from making the Licensed Material available under these terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
Section 1 – Definitions.
|
||||||
|
|
||||||
|
a. Adapted Material means material subject to Copyright and Similar Rights
|
||||||
|
that is derived from or based upon the Licensed Material and in which the
|
||||||
|
Licensed Material is translated, altered, arranged, transformed, or otherwise
|
||||||
|
modified in a manner requiring permission under the Copyright and Similar
|
||||||
|
Rights held by the Licensor. For purposes of this Public License, where the
|
||||||
|
Licensed Material is a musical work, performance, or sound recording, Adapted
|
||||||
|
Material is always produced where the Licensed Material is synched in timed
|
||||||
|
relation with a moving image.
|
||||||
|
|
||||||
|
b. Adapter's License means the license You apply to Your Copyright and Similar
|
||||||
|
Rights in Your contributions to Adapted Material in accordance with the terms
|
||||||
|
and conditions of this Public License.
|
||||||
|
|
||||||
|
c. Copyright and Similar Rights means copyright and/or similar rights closely
|
||||||
|
related to copyright including, without limitation, performance, broadcast,
|
||||||
|
sound recording, and Sui Generis Database Rights, without regard to how the
|
||||||
|
rights are labeled or categorized. For purposes of this Public License, the
|
||||||
|
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||||
|
|
||||||
|
d. Effective Technological Measures means those measures that, in the absence
|
||||||
|
of proper authority, may not be circumvented under laws fulfilling obligations
|
||||||
|
under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,
|
||||||
|
and/or similar international agreements.
|
||||||
|
|
||||||
|
e. Exceptions and Limitations means fair use, fair dealing, and/or any other
|
||||||
|
exception or limitation to Copyright and Similar Rights that applies to Your
|
||||||
|
use of the Licensed Material.
|
||||||
|
|
||||||
|
f. Licensed Material means the artistic or literary work, database, or other
|
||||||
|
material to which the Licensor applied this Public License.
|
||||||
|
|
||||||
|
g. Licensed Rights means the rights granted to You subject to the terms and
|
||||||
|
conditions of this Public License, which are limited to all Copyright and
|
||||||
|
Similar Rights that apply to Your use of the Licensed Material and that the
|
||||||
|
Licensor has authority to license.
|
||||||
|
|
||||||
|
h. Licensor means the individual(s) or entity(ies) granting rights under this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
i. Share means to provide material to the public by any means or process that
|
||||||
|
requires permission under the Licensed Rights, such as reproduction, public
|
||||||
|
display, public performance, distribution, dissemination, communication, or
|
||||||
|
importation, and to make material available to the public including in ways
|
||||||
|
that members of the public may access the material from a place and at a time
|
||||||
|
individually chosen by them.
|
||||||
|
|
||||||
|
j. Sui Generis Database Rights means rights other than copyright resulting
|
||||||
|
from Directive 96/9/EC of the European Parliament and of the Council of 11
|
||||||
|
March 1996 on the legal protection of databases, as amended and/or succeeded,
|
||||||
|
as well as other essentially equivalent rights anywhere in the world.
|
||||||
|
|
||||||
|
k. You means the individual or entity exercising the Licensed Rights under
|
||||||
|
this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
Section 2 – Scope.
|
||||||
|
|
||||||
|
a. License grant.
|
||||||
|
|
||||||
|
1. Subject to the terms and conditions of this Public License, the Licensor
|
||||||
|
hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,
|
||||||
|
irrevocable license to exercise the Licensed Rights in the Licensed Material
|
||||||
|
to:
|
||||||
|
|
||||||
|
A. reproduce and Share the Licensed Material, in whole or in part; and
|
||||||
|
|
||||||
|
B. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
|
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
|
||||||
|
and Limitations apply to Your use, this Public License does not apply, and
|
||||||
|
You do not need to comply with its terms and conditions.
|
||||||
|
|
||||||
|
3. Term. The term of this Public License is specified in Section 6(a).
|
||||||
|
|
||||||
|
4. Media and formats; technical modifications allowed. The Licensor authorizes
|
||||||
|
You to exercise the Licensed Rights in all media and formats whether now known
|
||||||
|
or hereafter created, and to make technical modifications necessary to do
|
||||||
|
so. The Licensor waives and/or agrees not to assert any right or authority
|
||||||
|
to forbid You from making technical modifications necessary to exercise the
|
||||||
|
Licensed Rights, including technical modifications necessary to circumvent
|
||||||
|
Effective Technological Measures. For purposes of this Public License, simply
|
||||||
|
making modifications authorized by this Section 2(a)(4) never produces Adapted
|
||||||
|
Material.
|
||||||
|
|
||||||
|
5. Downstream recipients.
|
||||||
|
|
||||||
|
A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
|
||||||
|
Material automatically receives an offer from the Licensor to exercise the
|
||||||
|
Licensed Rights under the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
B. No downstream restrictions. You may not offer or impose any additional
|
||||||
|
or different terms or conditions on, or apply any Effective Technological
|
||||||
|
Measures to, the Licensed Material if doing so restricts exercise of the Licensed
|
||||||
|
Rights by any recipient of the Licensed Material.
|
||||||
|
|
||||||
|
6. No endorsement. Nothing in this Public License constitutes or may be construed
|
||||||
|
as permission to assert or imply that You are, or that Your use of the Licensed
|
||||||
|
Material is, connected with, or sponsored, endorsed, or granted official status
|
||||||
|
by, the Licensor or others designated to receive attribution as provided in
|
||||||
|
Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
|
b. Other rights.
|
||||||
|
|
||||||
|
1. Moral rights, such as the right of integrity, are not licensed under this
|
||||||
|
Public License, nor are publicity, privacy, and/or other similar personality
|
||||||
|
rights; however, to the extent possible, the Licensor waives and/or agrees
|
||||||
|
not to assert any such rights held by the Licensor to the limited extent necessary
|
||||||
|
to allow You to exercise the Licensed Rights, but not otherwise.
|
||||||
|
|
||||||
|
2. Patent and trademark rights are not licensed under this Public License.
|
||||||
|
|
||||||
|
3. To the extent possible, the Licensor waives any right to collect royalties
|
||||||
|
from You for the exercise of the Licensed Rights, whether directly or through
|
||||||
|
a collecting society under any voluntary or waivable statutory or compulsory
|
||||||
|
licensing scheme. In all other cases the Licensor expressly reserves any right
|
||||||
|
to collect such royalties.
|
||||||
|
|
||||||
|
Section 3 – License Conditions.
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the following
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
a. Attribution.
|
||||||
|
|
||||||
|
1. If You Share the Licensed Material (including in modified form), You must:
|
||||||
|
|
||||||
|
A. retain the following if it is supplied by the Licensor with the Licensed
|
||||||
|
Material:
|
||||||
|
|
||||||
|
i. identification of the creator(s) of the Licensed Material and any others
|
||||||
|
designated to receive attribution, in any reasonable manner requested by the
|
||||||
|
Licensor (including by pseudonym if designated);
|
||||||
|
|
||||||
|
ii. a copyright notice;
|
||||||
|
|
||||||
|
iii. a notice that refers to this Public License;
|
||||||
|
|
||||||
|
iv. a notice that refers to the disclaimer of warranties;
|
||||||
|
|
||||||
|
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||||
|
|
||||||
|
B. indicate if You modified the Licensed Material and retain an indication
|
||||||
|
of any previous modifications; and
|
||||||
|
|
||||||
|
C. indicate the Licensed Material is licensed under this Public License, and
|
||||||
|
include the text of, or the URI or hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner
|
||||||
|
based on the medium, means, and context in which You Share the Licensed Material.
|
||||||
|
For example, it may be reasonable to satisfy the conditions by providing a
|
||||||
|
URI or hyperlink to a resource that includes the required information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the information required
|
||||||
|
by Section 3(a)(1)(A) to the extent reasonably practicable.
|
||||||
|
|
||||||
|
4. If You Share Adapted Material You produce, the Adapter's License You apply
|
||||||
|
must not prevent recipients of the Adapted Material from complying with this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
Section 4 – Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that apply to
|
||||||
|
Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
|
||||||
|
reuse, reproduce, and Share all or a substantial portion of the contents of
|
||||||
|
the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database contents in
|
||||||
|
a database in which You have Sui Generis Database Rights, then the database
|
||||||
|
in which You have Sui Generis Database Rights (but not its individual contents)
|
||||||
|
is Adapted Material; and
|
||||||
|
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share all or
|
||||||
|
a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not replace
|
||||||
|
Your obligations under this Public License where the Licensed Rights include
|
||||||
|
other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. Unless otherwise separately undertaken by the Licensor, to the extent possible,
|
||||||
|
the Licensor offers the Licensed Material as-is and as-available, and makes
|
||||||
|
no representations or warranties of any kind concerning the Licensed Material,
|
||||||
|
whether express, implied, statutory, or other. This includes, without limitation,
|
||||||
|
warranties of title, merchantability, fitness for a particular purpose, non-infringement,
|
||||||
|
absence of latent or other defects, accuracy, or the presence or absence of
|
||||||
|
errors, whether or not known or discoverable. Where disclaimers of warranties
|
||||||
|
are not allowed in full or in part, this disclaimer may not apply to You.
|
||||||
|
|
||||||
|
b. To the extent possible, in no event will the Licensor be liable to You
|
||||||
|
on any legal theory (including, without limitation, negligence) or otherwise
|
||||||
|
for any direct, special, indirect, incidental, consequential, punitive, exemplary,
|
||||||
|
or other losses, costs, expenses, or damages arising out of this Public License
|
||||||
|
or use of the Licensed Material, even if the Licensor has been advised of
|
||||||
|
the possibility of such losses, costs, expenses, or damages. Where a limitation
|
||||||
|
of liability is not allowed in full or in part, this limitation may not apply
|
||||||
|
to You.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided above
|
||||||
|
shall be interpreted in a manner that, to the extent possible, most closely
|
||||||
|
approximates an absolute disclaimer and waiver of all liability.
|
||||||
|
|
||||||
|
Section 6 – Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and Similar Rights
|
||||||
|
licensed here. However, if You fail to comply with this Public License, then
|
||||||
|
Your rights under this Public License terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under Section
|
||||||
|
6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided it is cured
|
||||||
|
within 30 days of Your discovery of the violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, this Section 6(b) does not affect any right
|
||||||
|
the Licensor may have to seek remedies for Your violations of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material
|
||||||
|
under separate terms or conditions or stop distributing the Licensed Material
|
||||||
|
at any time; however, doing so will not terminate this Public License.
|
||||||
|
|
||||||
|
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||||
|
|
||||||
|
Section 7 – Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different terms or
|
||||||
|
conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the Licensed
|
||||||
|
Material not stated herein are separate from and independent of the terms
|
||||||
|
and conditions of this Public License.
|
||||||
|
|
||||||
|
Section 8 – Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and shall not
|
||||||
|
be interpreted to, reduce, limit, restrict, or impose conditions on any use
|
||||||
|
of the Licensed Material that could lawfully be made without permission under
|
||||||
|
this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is deemed
|
||||||
|
unenforceable, it shall be automatically reformed to the minimum extent necessary
|
||||||
|
to make it enforceable. If the provision cannot be reformed, it shall be severed
|
||||||
|
from this Public License without affecting the enforceability of the remaining
|
||||||
|
terms and conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no failure
|
||||||
|
to comply consented to unless expressly agreed to by the Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted as a limitation
|
||||||
|
upon, or waiver of, any privileges and immunities that apply to the Licensor
|
||||||
|
or You, including from the legal processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public licenses. Notwithstanding, Creative
|
||||||
|
Commons may elect to apply one of its public licenses to material it publishes
|
||||||
|
and in those instances will be considered the "Licensor." The text of the
|
||||||
|
Creative Commons public licenses is dedicated to the public domain under the
|
||||||
|
CC0 Public Domain Dedication. Except for the limited purpose of indicating
|
||||||
|
that material is shared under a Creative Commons public license or as otherwise
|
||||||
|
permitted by the Creative Commons policies published at creativecommons.org/policies,
|
||||||
|
Creative Commons does not authorize the use of the trademark "Creative Commons"
|
||||||
|
or any other trademark or logo of Creative Commons without its prior written
|
||||||
|
consent including, without limitation, in connection with any unauthorized
|
||||||
|
modifications to any of its public licenses or any other arrangements, understandings,
|
||||||
|
or agreements concerning use of licensed material. For the avoidance of doubt,
|
||||||
|
this paragraph does not form part of the public licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
119
LICENSES/CC0-1.0.txt
Normal file
119
LICENSES/CC0-1.0.txt
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
|
||||||
|
NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
|
||||||
|
AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
|
||||||
|
ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
|
||||||
|
OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
|
||||||
|
LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
|
||||||
|
OR WORKS PROVIDED HEREUNDER.
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer exclusive
|
||||||
|
Copyright and Related Rights (defined below) upon the creator and subsequent
|
||||||
|
owner(s) (each and all, an "owner") of an original work of authorship and/or
|
||||||
|
a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for the
|
||||||
|
purpose of contributing to a commons of creative, cultural and scientific
|
||||||
|
works ("Commons") that the public can reliably and without fear of later claims
|
||||||
|
of infringement build upon, modify, incorporate in other works, reuse and
|
||||||
|
redistribute as freely as possible in any form whatsoever and for any purposes,
|
||||||
|
including without limitation commercial purposes. These owners may contribute
|
||||||
|
to the Commons to promote the ideal of a free culture and the further production
|
||||||
|
of creative, cultural and scientific works, or to gain reputation or greater
|
||||||
|
distribution for their Work in part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any expectation
|
||||||
|
of additional consideration or compensation, the person associating CC0 with
|
||||||
|
a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
||||||
|
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
||||||
|
and publicly distribute the Work under its terms, with knowledge of his or
|
||||||
|
her Copyright and Related Rights in the Work and the meaning and intended
|
||||||
|
legal effect of CC0 on those rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be protected
|
||||||
|
by copyright and related or neighboring rights ("Copyright and Related Rights").
|
||||||
|
Copyright and Related Rights include, but are not limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
||||||
|
and translate a Work;
|
||||||
|
|
||||||
|
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||||
|
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or likeness
|
||||||
|
depicted in a Work;
|
||||||
|
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work, subject
|
||||||
|
to the limitations in paragraph 4(a), below;
|
||||||
|
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||||
|
in a Work;
|
||||||
|
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||||
|
European Parliament and of the Council of 11 March 1996 on the legal protection
|
||||||
|
of databases, and under any national implementation thereof, including any
|
||||||
|
amended or successor version of such directive); and
|
||||||
|
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the world
|
||||||
|
based on applicable law or treaty, and any national implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
||||||
|
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
||||||
|
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
||||||
|
and Related Rights and associated claims and causes of action, whether now
|
||||||
|
known or unknown (including existing as well as future claims and causes of
|
||||||
|
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
||||||
|
duration provided by applicable law or treaty (including future time extensions),
|
||||||
|
(iii) in any current or future medium and for any number of copies, and (iv)
|
||||||
|
for any purpose whatsoever, including without limitation commercial, advertising
|
||||||
|
or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
|
||||||
|
benefit of each member of the public at large and to the detriment of Affirmer's
|
||||||
|
heirs and successors, fully intending that such Waiver shall not be subject
|
||||||
|
to revocation, rescission, cancellation, termination, or any other legal or
|
||||||
|
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||||
|
as contemplated by Affirmer's express Statement of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason be
|
||||||
|
judged legally invalid or ineffective under applicable law, then the Waiver
|
||||||
|
shall be preserved to the maximum extent permitted taking into account Affirmer's
|
||||||
|
express Statement of Purpose. In addition, to the extent the Waiver is so
|
||||||
|
judged Affirmer hereby grants to each affected person a royalty-free, non
|
||||||
|
transferable, non sublicensable, non exclusive, irrevocable and unconditional
|
||||||
|
license to exercise Affirmer's Copyright and Related Rights in the Work (i)
|
||||||
|
in all territories worldwide, (ii) for the maximum duration provided by applicable
|
||||||
|
law or treaty (including future time extensions), (iii) in any current or
|
||||||
|
future medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||||
|
including without limitation commercial, advertising or promotional purposes
|
||||||
|
(the "License"). The License shall be deemed effective as of the date CC0
|
||||||
|
was applied by Affirmer to the Work. Should any part of the License for any
|
||||||
|
reason be judged legally invalid or ineffective under applicable law, such
|
||||||
|
partial invalidity or ineffectiveness shall not invalidate the remainder of
|
||||||
|
the License, and in such case Affirmer hereby affirms that he or she will
|
||||||
|
not (i) exercise any of his or her remaining Copyright and Related Rights
|
||||||
|
in the Work or (ii) assert any associated claims and causes of action with
|
||||||
|
respect to the Work, in either case contrary to Affirmer's express Statement
|
||||||
|
of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
|
||||||
|
licensed or otherwise affected by this document.
|
||||||
|
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or warranties
|
||||||
|
of any kind concerning the Work, express, implied, statutory or otherwise,
|
||||||
|
including without limitation warranties of title, merchantability, fitness
|
||||||
|
for a particular purpose, non infringement, or the absence of latent or other
|
||||||
|
defects, accuracy, or the present or absence of errors, whether or not discoverable,
|
||||||
|
all to the greatest extent permissible under applicable law.
|
||||||
|
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||||
|
that may apply to the Work or any use thereof, including without limitation
|
||||||
|
any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
|
||||||
|
responsibility for obtaining any necessary consents, permissions or other
|
||||||
|
rights required for any use of the Work.
|
||||||
|
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not a party
|
||||||
|
to this document and has no duty or obligation with respect to this CC0 or
|
||||||
|
use of the Work.
|
@ -1,383 +0,0 @@
|
|||||||
Unless otherwise *explicitly* stated the following text describes the
|
|
||||||
licensed conditions under which the contents of this libpwquality release
|
|
||||||
may be distributed:
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
Redistribution and use in source and binary forms of libpwquality, with
|
|
||||||
or without modification, are permitted provided that the following
|
|
||||||
conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain any existing copyright
|
|
||||||
notice, and this entire permission notice in its entirety,
|
|
||||||
including the disclaimer of warranties.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce all prior and current
|
|
||||||
copyright notices, this list of conditions, and the following
|
|
||||||
disclaimer in the documentation and/or other materials provided
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
3. The name of any author may not be used to endorse or promote
|
|
||||||
products derived from this software without their specific prior
|
|
||||||
written permission.
|
|
||||||
|
|
||||||
ALTERNATIVELY, this product may be distributed under the terms of the
|
|
||||||
GNU General Public License version 2 or later, in which case the provisions
|
|
||||||
of the GNU GPL are required INSTEAD OF the above restrictions.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
||||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
||||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
|
||||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
||||||
DAMAGE.
|
|
||||||
|
|
||||||
The full text of the GNU GENERAL PUBLIC LICENSE Version 2 is included
|
|
||||||
below.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
License is intended to guarantee your freedom to share and change free
|
|
||||||
software--to make sure the software is free for all its users. This
|
|
||||||
General Public License applies to most of the Free Software
|
|
||||||
Foundation's software and to any other program whose authors commit to
|
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
this service if you wish), that you receive source code or can get it
|
|
||||||
if you want it, that you can change the software or use pieces of it
|
|
||||||
in new free programs; and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
anyone to deny you these rights or to ask you to surrender the rights.
|
|
||||||
These restrictions translate to certain responsibilities for you if you
|
|
||||||
distribute copies of the software, or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must give the recipients all the rights that
|
|
||||||
you have. You must make sure that they, too, receive or can get the
|
|
||||||
source code. And you must show them these terms so they know their
|
|
||||||
rights.
|
|
||||||
|
|
||||||
We protect your rights with two steps: (1) copyright the software, and
|
|
||||||
(2) offer you this license which gives you legal permission to copy,
|
|
||||||
distribute and/or modify the software.
|
|
||||||
|
|
||||||
Also, for each author's protection and ours, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
software. If the software is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original, so
|
|
||||||
that any problems introduced by others will not reflect on the original
|
|
||||||
authors' reputations.
|
|
||||||
|
|
||||||
Finally, any free program is threatened constantly by software
|
|
||||||
patents. We wish to avoid the danger that redistributors of a free
|
|
||||||
program will individually obtain patent licenses, in effect making the
|
|
||||||
program proprietary. To prevent this, we have made it clear that any
|
|
||||||
patent must be licensed for everyone's free use or not licensed at all.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License applies to any program or other work which contains
|
|
||||||
a notice placed by the copyright holder saying it may be distributed
|
|
||||||
under the terms of this General Public License. The "Program", below,
|
|
||||||
refers to any such program or work, and a "work based on the Program"
|
|
||||||
means either the Program or any derivative work under copyright law:
|
|
||||||
that is to say, a work containing the Program or a portion of it,
|
|
||||||
either verbatim or with modifications and/or translated into another
|
|
||||||
language. (Hereinafter, translation is included without limitation in
|
|
||||||
the term "modification".) Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running the Program is not restricted, and the output from the Program
|
|
||||||
is covered only if its contents constitute a work based on the
|
|
||||||
Program (independent of having been made by running the Program).
|
|
||||||
Whether that is true depends on what the Program does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Program's
|
|
||||||
source code as you receive it, in any medium, provided that you
|
|
||||||
conspicuously and appropriately publish on each copy an appropriate
|
|
||||||
copyright notice and disclaimer of warranty; keep intact all the
|
|
||||||
notices that refer to this License and to the absence of any warranty;
|
|
||||||
and give any other recipients of the Program a copy of this License
|
|
||||||
along with the Program.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy, and
|
|
||||||
you may at your option offer warranty protection in exchange for a fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Program or any portion
|
|
||||||
of it, thus forming a work based on the Program, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) You must cause the modified files to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
b) You must cause any work that you distribute or publish, that in
|
|
||||||
whole or in part contains or is derived from the Program or any
|
|
||||||
part thereof, to be licensed as a whole at no charge to all third
|
|
||||||
parties under the terms of this License.
|
|
||||||
|
|
||||||
c) If the modified program normally reads commands interactively
|
|
||||||
when run, you must cause it, when started running for such
|
|
||||||
interactive use in the most ordinary way, to print or display an
|
|
||||||
announcement including an appropriate copyright notice and a
|
|
||||||
notice that there is no warranty (or else, saying that you provide
|
|
||||||
a warranty) and that users may redistribute the program under
|
|
||||||
these conditions, and telling the user how to view a copy of this
|
|
||||||
License. (Exception: if the Program itself is interactive but
|
|
||||||
does not normally print such an announcement, your work based on
|
|
||||||
the Program is not required to print an announcement.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Program,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Program, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Program.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Program
|
|
||||||
with the Program (or with a work based on the Program) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may copy and distribute the Program (or a work based on it,
|
|
||||||
under Section 2) in object code or executable form under the terms of
|
|
||||||
Sections 1 and 2 above provided that you also do one of the following:
|
|
||||||
|
|
||||||
a) Accompany it with the complete corresponding machine-readable
|
|
||||||
source code, which must be distributed under the terms of Sections
|
|
||||||
1 and 2 above on a medium customarily used for software interchange; or,
|
|
||||||
|
|
||||||
b) Accompany it with a written offer, valid for at least three
|
|
||||||
years, to give any third party, for a charge no more than your
|
|
||||||
cost of physically performing source distribution, a complete
|
|
||||||
machine-readable copy of the corresponding source code, to be
|
|
||||||
distributed under the terms of Sections 1 and 2 above on a medium
|
|
||||||
customarily used for software interchange; or,
|
|
||||||
|
|
||||||
c) Accompany it with the information you received as to the offer
|
|
||||||
to distribute corresponding source code. (This alternative is
|
|
||||||
allowed only for noncommercial distribution and only if you
|
|
||||||
received the program in object code or executable form with such
|
|
||||||
an offer, in accord with Subsection b above.)
|
|
||||||
|
|
||||||
The source code for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For an executable work, complete source
|
|
||||||
code means all the source code for all modules it contains, plus any
|
|
||||||
associated interface definition files, plus the scripts used to
|
|
||||||
control compilation and installation of the executable. However, as a
|
|
||||||
special exception, the source code distributed need not include
|
|
||||||
anything that is normally distributed (in either source or binary
|
|
||||||
form) with the major components (compiler, kernel, and so on) of the
|
|
||||||
operating system on which the executable runs, unless that component
|
|
||||||
itself accompanies the executable.
|
|
||||||
|
|
||||||
If distribution of executable or object code is made by offering
|
|
||||||
access to copy from a designated place, then offering equivalent
|
|
||||||
access to copy the source code from the same place counts as
|
|
||||||
distribution of the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
4. You may not copy, modify, sublicense, or distribute the Program
|
|
||||||
except as expressly provided under this License. Any attempt
|
|
||||||
otherwise to copy, modify, sublicense or distribute the Program is
|
|
||||||
void, and will automatically terminate your rights under this License.
|
|
||||||
However, parties who have received copies, or rights, from you under
|
|
||||||
this License will not have their licenses terminated so long as such
|
|
||||||
parties remain in full compliance.
|
|
||||||
|
|
||||||
5. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Program or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Program (or any work based on the
|
|
||||||
Program), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Program or works based on it.
|
|
||||||
|
|
||||||
6. Each time you redistribute the Program (or any work based on the
|
|
||||||
Program), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute or modify the Program subject to
|
|
||||||
these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties to
|
|
||||||
this License.
|
|
||||||
|
|
||||||
7. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Program at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Program by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Program.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under
|
|
||||||
any particular circumstance, the balance of the section is intended to
|
|
||||||
apply and the section as a whole is intended to apply in other
|
|
||||||
circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system, which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
8. If the distribution and/or use of the Program is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Program under this License
|
|
||||||
may add an explicit geographical distribution limitation excluding
|
|
||||||
those countries, so that distribution is permitted only in or among
|
|
||||||
countries not thus excluded. In such case, this License incorporates
|
|
||||||
the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
9. The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Program
|
|
||||||
specifies a version number of this License which applies to it and "any
|
|
||||||
later version", you have the option of following the terms and conditions
|
|
||||||
either of that version or of any later version published by the Free
|
|
||||||
Software Foundation. If the Program does not specify a version number of
|
|
||||||
this License, you may choose any version ever published by the Free Software
|
|
||||||
Foundation.
|
|
||||||
|
|
||||||
10. If you wish to incorporate parts of the Program into other free
|
|
||||||
programs whose distribution conditions are different, write to the author
|
|
||||||
to ask for permission. For software which is copyrighted by the Free
|
|
||||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
||||||
make exceptions for this. Our decision will be guided by the two goals
|
|
||||||
of preserving the free status of all derivatives of our free software and
|
|
||||||
of promoting the sharing and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
||||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
||||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
||||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
||||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
||||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
||||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
||||||
REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
||||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
||||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
||||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
||||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program 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 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program 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 this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program is interactive, make it output a short notice like this
|
|
||||||
when it starts in an interactive mode:
|
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, the commands you use may
|
|
||||||
be called something other than `show w' and `show c'; they could even be
|
|
||||||
mouse-clicks or menu items--whatever suits your program.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
||||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1989
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
This General Public License does not permit incorporating your program into
|
|
||||||
proprietary programs. If your program is a subroutine library, you may
|
|
||||||
consider it more useful to permit linking proprietary applications with the
|
|
||||||
library. If this is what you want to do, use the GNU Library General
|
|
||||||
Public License instead of this License.
|
|
@ -1,16 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
|
||||||
|
|
||||||
This program 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.
|
|
||||||
|
|
||||||
This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
467
LICENSES/LGPL-2.1-only.txt
Normal file
467
LICENSES/LGPL-2.1-only.txt
Normal file
@ -0,0 +1,467 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
|
Version 2.1, February 1999
|
||||||
|
|
||||||
|
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||||
|
document, but changing it is not allowed.
|
||||||
|
|
||||||
|
[This is the first released version of the Lesser GPL. It also counts as the
|
||||||
|
successor of the GNU Library Public License, version 2, hence the version
|
||||||
|
number 2.1.]
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your freedom to share
|
||||||
|
and change it. By contrast, the GNU General Public Licenses are intended to
|
||||||
|
guarantee your freedom to share and change free software--to make sure the
|
||||||
|
software is free for all its users.
|
||||||
|
|
||||||
|
This license, the Lesser General Public License, applies to some specially
|
||||||
|
designated software packages--typically libraries--of the Free Software Foundation
|
||||||
|
and other authors who decide to use it. You can use it too, but we suggest
|
||||||
|
you first think carefully about whether this license or the ordinary General
|
||||||
|
Public License is the better strategy to use in any particular case, based
|
||||||
|
on the explanations below.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom of use, not price.
|
||||||
|
Our General Public Licenses are designed to make sure that you have the freedom
|
||||||
|
to distribute copies of free software (and charge for this service if you
|
||||||
|
wish); that you receive source code or can get it if you want it; that you
|
||||||
|
can change the software and use pieces of it in new free programs; and that
|
||||||
|
you are informed that you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid distributors
|
||||||
|
to deny you these rights or to ask you to surrender these rights. These restrictions
|
||||||
|
translate to certain responsibilities for you if you distribute copies of
|
||||||
|
the library or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of the library, whether gratis or for
|
||||||
|
a fee, you must give the recipients all the rights that we gave you. You must
|
||||||
|
make sure that they, too, receive or can get the source code. If you link
|
||||||
|
other code with the library, you must provide complete object files to the
|
||||||
|
recipients, so that they can relink them with the library after making changes
|
||||||
|
to the library and recompiling it. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
We protect your rights with a two-step method: (1) we copyright the library,
|
||||||
|
and (2) we offer you this license, which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the library.
|
||||||
|
|
||||||
|
To protect each distributor, we want to make it very clear that there is no
|
||||||
|
warranty for the free library. Also, if the library is modified by someone
|
||||||
|
else and passed on, the recipients should know that what they have is not
|
||||||
|
the original version, so that the original author's reputation will not be
|
||||||
|
affected by problems that might be introduced by others.
|
||||||
|
|
||||||
|
Finally, software patents pose a constant threat to the existence of any free
|
||||||
|
program. We wish to make sure that a company cannot effectively restrict the
|
||||||
|
users of a free program by obtaining a restrictive license from a patent holder.
|
||||||
|
Therefore, we insist that any patent license obtained for a version of the
|
||||||
|
library must be consistent with the full freedom of use specified in this
|
||||||
|
license.
|
||||||
|
|
||||||
|
Most GNU software, including some libraries, is covered by the ordinary GNU
|
||||||
|
General Public License. This license, the GNU Lesser General Public License,
|
||||||
|
applies to certain designated libraries, and is quite different from the ordinary
|
||||||
|
General Public License. We use this license for certain libraries in order
|
||||||
|
to permit linking those libraries into non-free programs.
|
||||||
|
|
||||||
|
When a program is linked with a library, whether statically or using a shared
|
||||||
|
library, the combination of the two is legally speaking a combined work, a
|
||||||
|
derivative of the original library. The ordinary General Public License therefore
|
||||||
|
permits such linking only if the entire combination fits its criteria of freedom.
|
||||||
|
The Lesser General Public License permits more lax criteria for linking other
|
||||||
|
code with the library.
|
||||||
|
|
||||||
|
We call this license the "Lesser" General Public License because it does Less
|
||||||
|
to protect the user's freedom than the ordinary General Public License. It
|
||||||
|
also provides other free software developers Less of an advantage over competing
|
||||||
|
non-free programs. These disadvantages are the reason we use the ordinary
|
||||||
|
General Public License for many libraries. However, the Lesser license provides
|
||||||
|
advantages in certain special circumstances.
|
||||||
|
|
||||||
|
For example, on rare occasions, there may be a special need to encourage the
|
||||||
|
widest possible use of a certain library, so that it becomes a de-facto standard.
|
||||||
|
To achieve this, non-free programs must be allowed to use the library. A more
|
||||||
|
frequent case is that a free library does the same job as widely used non-free
|
||||||
|
libraries. In this case, there is little to gain by limiting the free library
|
||||||
|
to free software only, so we use the Lesser General Public License.
|
||||||
|
|
||||||
|
In other cases, permission to use a particular library in non-free programs
|
||||||
|
enables a greater number of people to use a large body of free software. For
|
||||||
|
example, permission to use the GNU C Library in non-free programs enables
|
||||||
|
many more people to use the whole GNU operating system, as well as its variant,
|
||||||
|
the GNU/Linux operating system.
|
||||||
|
|
||||||
|
Although the Lesser General Public License is Less protective of the users'
|
||||||
|
freedom, it does ensure that the user of a program that is linked with the
|
||||||
|
Library has the freedom and the wherewithal to run that program using a modified
|
||||||
|
version of the Library.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and modification
|
||||||
|
follow. Pay close attention to the difference between a "work based on the
|
||||||
|
library" and a "work that uses the library". The former contains code derived
|
||||||
|
from the library, whereas the latter must be combined with the library in
|
||||||
|
order to run.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License Agreement applies to any software library or other program
|
||||||
|
which contains a notice placed by the copyright holder or other authorized
|
||||||
|
party saying it may be distributed under the terms of this Lesser General
|
||||||
|
Public License (also called "this License"). Each licensee is addressed as
|
||||||
|
"you".
|
||||||
|
|
||||||
|
A "library" means a collection of software functions and/or data prepared
|
||||||
|
so as to be conveniently linked with application programs (which use some
|
||||||
|
of those functions and data) to form executables.
|
||||||
|
|
||||||
|
The "Library", below, refers to any such software library or work which has
|
||||||
|
been distributed under these terms. A "work based on the Library" means either
|
||||||
|
the Library or any derivative work under copyright law: that is to say, a
|
||||||
|
work containing the Library or a portion of it, either verbatim or with modifications
|
||||||
|
and/or translated straightforwardly into another language. (Hereinafter, translation
|
||||||
|
is included without limitation in the term "modification".)
|
||||||
|
|
||||||
|
"Source code" for a work means the preferred form of the work for making modifications
|
||||||
|
to it. For a library, complete source code means all the source code for all
|
||||||
|
modules it contains, plus any associated interface definition files, plus
|
||||||
|
the scripts used to control compilation and installation of the library.
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not covered
|
||||||
|
by this License; they are outside its scope. The act of running a program
|
||||||
|
using the Library is not restricted, and output from such a program is covered
|
||||||
|
only if its contents constitute a work based on the Library (independent of
|
||||||
|
the use of the Library in a tool for writing it). Whether that is true depends
|
||||||
|
on what the Library does and what the program that uses the Library does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Library's complete source
|
||||||
|
code as you receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice and disclaimer
|
||||||
|
of warranty; keep intact all the notices that refer to this License and to
|
||||||
|
the absence of any warranty; and distribute a copy of this License along with
|
||||||
|
the Library.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and you
|
||||||
|
may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Library or any portion of it,
|
||||||
|
thus forming a work based on the Library, and copy and distribute such modifications
|
||||||
|
or work under the terms of Section 1 above, provided that you also meet all
|
||||||
|
of these conditions:
|
||||||
|
|
||||||
|
a) The modified work must itself be a software library.
|
||||||
|
|
||||||
|
b) You must cause the files modified to carry prominent notices stating that
|
||||||
|
you changed the files and the date of any change.
|
||||||
|
|
||||||
|
c) You must cause the whole of the work to be licensed at no charge to all
|
||||||
|
third parties under the terms of this License.
|
||||||
|
|
||||||
|
d) If a facility in the modified Library refers to a function or a table of
|
||||||
|
data to be supplied by an application program that uses the facility, other
|
||||||
|
than as an argument passed when the facility is invoked, then you must make
|
||||||
|
a good faith effort to ensure that, in the event an application does not supply
|
||||||
|
such function or table, the facility still operates, and performs whatever
|
||||||
|
part of its purpose remains meaningful.
|
||||||
|
|
||||||
|
(For example, a function in a library to compute square roots has a purpose
|
||||||
|
that is entirely well-defined independent of the application. Therefore, Subsection
|
||||||
|
2d requires that any application-supplied function or table used by this function
|
||||||
|
must be optional: if the application does not supply it, the square root function
|
||||||
|
must still compute square roots.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If identifiable
|
||||||
|
sections of that work are not derived from the Library, and can be reasonably
|
||||||
|
considered independent and separate works in themselves, then this License,
|
||||||
|
and its terms, do not apply to those sections when you distribute them as
|
||||||
|
separate works. But when you distribute the same sections as part of a whole
|
||||||
|
which is a work based on the Library, the distribution of the whole must be
|
||||||
|
on the terms of this License, whose permissions for other licensees extend
|
||||||
|
to the entire whole, and thus to each and every part regardless of who wrote
|
||||||
|
it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest your
|
||||||
|
rights to work written entirely by you; rather, the intent is to exercise
|
||||||
|
the right to control the distribution of derivative or collective works based
|
||||||
|
on the Library.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Library with
|
||||||
|
the Library (or with a work based on the Library) on a volume of a storage
|
||||||
|
or distribution medium does not bring the other work under the scope of this
|
||||||
|
License.
|
||||||
|
|
||||||
|
3. You may opt to apply the terms of the ordinary GNU General Public License
|
||||||
|
instead of this License to a given copy of the Library. To do this, you must
|
||||||
|
alter all the notices that refer to this License, so that they refer to the
|
||||||
|
ordinary GNU General Public License, version 2, instead of to this License.
|
||||||
|
(If a newer version than version 2 of the ordinary GNU General Public License
|
||||||
|
has appeared, then you can specify that version instead if you wish.) Do not
|
||||||
|
make any other change in these notices.
|
||||||
|
|
||||||
|
Once this change is made in a given copy, it is irreversible for that copy,
|
||||||
|
so the ordinary GNU General Public License applies to all subsequent copies
|
||||||
|
and derivative works made from that copy.
|
||||||
|
|
||||||
|
This option is useful when you wish to copy part of the code of the Library
|
||||||
|
into a program that is not a library.
|
||||||
|
|
||||||
|
4. You may copy and distribute the Library (or a portion or derivative of
|
||||||
|
it, under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you accompany it with the complete corresponding
|
||||||
|
machine-readable source code, which must be distributed under the terms of
|
||||||
|
Sections 1 and 2 above on a medium customarily used for software interchange.
|
||||||
|
|
||||||
|
If distribution of object code is made by offering access to copy from a designated
|
||||||
|
place, then offering equivalent access to copy the source code from the same
|
||||||
|
place satisfies the requirement to distribute the source code, even though
|
||||||
|
third parties are not compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
5. A program that contains no derivative of any portion of the Library, but
|
||||||
|
is designed to work with the Library by being compiled or linked with it,
|
||||||
|
is called a "work that uses the Library". Such a work, in isolation, is not
|
||||||
|
a derivative work of the Library, and therefore falls outside the scope of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
However, linking a "work that uses the Library" with the Library creates an
|
||||||
|
executable that is a derivative of the Library (because it contains portions
|
||||||
|
of the Library), rather than a "work that uses the library". The executable
|
||||||
|
is therefore covered by this License. Section 6 states terms for distribution
|
||||||
|
of such executables.
|
||||||
|
|
||||||
|
When a "work that uses the Library" uses material from a header file that
|
||||||
|
is part of the Library, the object code for the work may be a derivative work
|
||||||
|
of the Library even though the source code is not. Whether this is true is
|
||||||
|
especially significant if the work can be linked without the Library, or if
|
||||||
|
the work is itself a library. The threshold for this to be true is not precisely
|
||||||
|
defined by law.
|
||||||
|
|
||||||
|
If such an object file uses only numerical parameters, data structure layouts
|
||||||
|
and accessors, and small macros and small inline functions (ten lines or less
|
||||||
|
in length), then the use of the object file is unrestricted, regardless of
|
||||||
|
whether it is legally a derivative work. (Executables containing this object
|
||||||
|
code plus portions of the Library will still fall under Section 6.)
|
||||||
|
|
||||||
|
Otherwise, if the work is a derivative of the Library, you may distribute
|
||||||
|
the object code for the work under the terms of Section 6. Any executables
|
||||||
|
containing that work also fall under Section 6, whether or not they are linked
|
||||||
|
directly with the Library itself.
|
||||||
|
|
||||||
|
6. As an exception to the Sections above, you may also combine or link a "work
|
||||||
|
that uses the Library" with the Library to produce a work containing portions
|
||||||
|
of the Library, and distribute that work under terms of your choice, provided
|
||||||
|
that the terms permit modification of the work for the customer's own use
|
||||||
|
and reverse engineering for debugging such modifications.
|
||||||
|
|
||||||
|
You must give prominent notice with each copy of the work that the Library
|
||||||
|
is used in it and that the Library and its use are covered by this License.
|
||||||
|
You must supply a copy of this License. If the work during execution displays
|
||||||
|
copyright notices, you must include the copyright notice for the Library among
|
||||||
|
them, as well as a reference directing the user to the copy of this License.
|
||||||
|
Also, you must do one of these things:
|
||||||
|
|
||||||
|
a) Accompany the work with the complete corresponding machine-readable source
|
||||||
|
code for the Library including whatever changes were used in the work (which
|
||||||
|
must be distributed under Sections 1 and 2 above); and, if the work is an
|
||||||
|
executable linked with the Library, with the complete machine-readable "work
|
||||||
|
that uses the Library", as object code and/or source code, so that the user
|
||||||
|
can modify the Library and then relink to produce a modified executable containing
|
||||||
|
the modified Library. (It is understood that the user who changes the contents
|
||||||
|
of definitions files in the Library will not necessarily be able to recompile
|
||||||
|
the application to use the modified definitions.)
|
||||||
|
|
||||||
|
b) Use a suitable shared library mechanism for linking with the Library. A
|
||||||
|
suitable mechanism is one that (1) uses at run time a copy of the library
|
||||||
|
already present on the user's computer system, rather than copying library
|
||||||
|
functions into the executable, and (2) will operate properly with a modified
|
||||||
|
version of the library, if the user installs one, as long as the modified
|
||||||
|
version is interface-compatible with the version that the work was made with.
|
||||||
|
|
||||||
|
c) Accompany the work with a written offer, valid for at least three years,
|
||||||
|
to give the same user the materials specified in Subsection 6a, above, for
|
||||||
|
a charge no more than the cost of performing this distribution.
|
||||||
|
|
||||||
|
d) If distribution of the work is made by offering access to copy from a designated
|
||||||
|
place, offer equivalent access to copy the above specified materials from
|
||||||
|
the same place.
|
||||||
|
|
||||||
|
e) Verify that the user has already received a copy of these materials or
|
||||||
|
that you have already sent this user a copy.
|
||||||
|
|
||||||
|
For an executable, the required form of the "work that uses the Library" must
|
||||||
|
include any data and utility programs needed for reproducing the executable
|
||||||
|
from it. However, as a special exception, the materials to be distributed
|
||||||
|
need not include anything that is normally distributed (in either source or
|
||||||
|
binary form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component itself
|
||||||
|
accompanies the executable.
|
||||||
|
|
||||||
|
It may happen that this requirement contradicts the license restrictions of
|
||||||
|
other proprietary libraries that do not normally accompany the operating system.
|
||||||
|
Such a contradiction means you cannot use both them and the Library together
|
||||||
|
in an executable that you distribute.
|
||||||
|
|
||||||
|
7. You may place library facilities that are a work based on the Library side-by-side
|
||||||
|
in a single library together with other library facilities not covered by
|
||||||
|
this License, and distribute such a combined library, provided that the separate
|
||||||
|
distribution of the work based on the Library and of the other library facilities
|
||||||
|
is otherwise permitted, and provided that you do these two things:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based on the
|
||||||
|
Library, uncombined with any other library facilities. This must be distributed
|
||||||
|
under the terms of the Sections above.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library of the fact that part of
|
||||||
|
it is a work based on the Library, and explaining where to find the accompanying
|
||||||
|
uncombined form of the same work.
|
||||||
|
|
||||||
|
8. You may not copy, modify, sublicense, link with, or distribute the Library
|
||||||
|
except as expressly provided under this License. Any attempt otherwise to
|
||||||
|
copy, modify, sublicense, link with, or distribute the Library is void, and
|
||||||
|
will automatically terminate your rights under this License. However, parties
|
||||||
|
who have received copies, or rights, from you under this License will not
|
||||||
|
have their licenses terminated so long as such parties remain in full compliance.
|
||||||
|
|
||||||
|
9. You are not required to accept this License, since you have not signed
|
||||||
|
it. However, nothing else grants you permission to modify or distribute the
|
||||||
|
Library or its derivative works. These actions are prohibited by law if you
|
||||||
|
do not accept this License. Therefore, by modifying or distributing the Library
|
||||||
|
(or any work based on the Library), you indicate your acceptance of this License
|
||||||
|
to do so, and all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Library or works based on it.
|
||||||
|
|
||||||
|
10. Each time you redistribute the Library (or any work based on the Library),
|
||||||
|
the recipient automatically receives a license from the original licensor
|
||||||
|
to copy, distribute, link with or modify the Library subject to these terms
|
||||||
|
and conditions. You may not impose any further restrictions on the recipients'
|
||||||
|
exercise of the rights granted herein. You are not responsible for enforcing
|
||||||
|
compliance by third parties with this License.
|
||||||
|
|
||||||
|
11. If, as a consequence of a court judgment or allegation of patent infringement
|
||||||
|
or for any other reason (not limited to patent issues), conditions are imposed
|
||||||
|
on you (whether by court order, agreement or otherwise) that contradict the
|
||||||
|
conditions of this License, they do not excuse you from the conditions of
|
||||||
|
this License. If you cannot distribute so as to satisfy simultaneously your
|
||||||
|
obligations under this License and any other pertinent obligations, then as
|
||||||
|
a consequence you may not distribute the Library at all. For example, if a
|
||||||
|
patent license would not permit royalty-free redistribution of the Library
|
||||||
|
by all those who receive copies directly or indirectly through you, then the
|
||||||
|
only way you could satisfy both it and this License would be to refrain entirely
|
||||||
|
from distribution of the Library.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under any
|
||||||
|
particular circumstance, the balance of the section is intended to apply,
|
||||||
|
and the section as a whole is intended to apply in other circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any patents
|
||||||
|
or other property right claims or to contest validity of any such claims;
|
||||||
|
this section has the sole purpose of protecting the integrity of the free
|
||||||
|
software distribution system which is implemented by public license practices.
|
||||||
|
Many people have made generous contributions to the wide range of software
|
||||||
|
distributed through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing to
|
||||||
|
distribute software through any other system and a licensee cannot impose
|
||||||
|
that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to be a
|
||||||
|
consequence of the rest of this License.
|
||||||
|
|
||||||
|
12. If the distribution and/or use of the Library is restricted in certain
|
||||||
|
countries either by patents or by copyrighted interfaces, the original copyright
|
||||||
|
holder who places the Library under this License may add an explicit geographical
|
||||||
|
distribution limitation excluding those countries, so that distribution is
|
||||||
|
permitted only in or among countries not thus excluded. In such case, this
|
||||||
|
License incorporates the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
13. The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the Lesser General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to address
|
||||||
|
new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Library specifies
|
||||||
|
a version number of this License which applies to it and "any later version",
|
||||||
|
you have the option of following the terms and conditions either of that version
|
||||||
|
or of any later version published by the Free Software Foundation. If the
|
||||||
|
Library does not specify a license version number, you may choose any version
|
||||||
|
ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
14. If you wish to incorporate parts of the Library into other free programs
|
||||||
|
whose distribution conditions are incompatible with these, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free Software
|
||||||
|
Foundation, write to the Free Software Foundation; we sometimes make exceptions
|
||||||
|
for this. Our decision will be guided by the two goals of preserving the free
|
||||||
|
status of all derivatives of our free software and of promoting the sharing
|
||||||
|
and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
|
||||||
|
THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
||||||
|
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
|
||||||
|
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||||
|
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
|
||||||
|
OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||||
|
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
|
||||||
|
THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
|
||||||
|
OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
|
||||||
|
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
|
||||||
|
OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
|
||||||
|
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
|
If you develop a new library, and you want it to be of the greatest possible
|
||||||
|
use to the public, we recommend making it free software that everyone can
|
||||||
|
redistribute and change. You can do so by permitting redistribution under
|
||||||
|
these terms (or, alternatively, under the terms of the ordinary General Public
|
||||||
|
License).
|
||||||
|
|
||||||
|
To apply these terms, attach the following notices to the library. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively convey
|
||||||
|
the exclusion of warranty; and each file should have at least the "copyright"
|
||||||
|
line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
< one line to give the library's name and an idea of what it does. >
|
||||||
|
|
||||||
|
Copyright (C) < year > < name of author >
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
Software Foundation; either version 2.1 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This library 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 Lesser General Public License for more
|
||||||
|
details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
with this library; if not, write to the Free Software Foundation, Inc., 51
|
||||||
|
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information
|
||||||
|
on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the library, if necessary. Here
|
||||||
|
is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in
|
||||||
|
|
||||||
|
the library `Frob' (a library for tweaking knobs) written
|
||||||
|
|
||||||
|
by James Random Hacker.
|
||||||
|
|
||||||
|
< signature of Ty Coon > , 1 April 1990
|
||||||
|
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
That's all there is to it!
|
163
LICENSES/LGPL-3.0-or-later.txt
Normal file
163
LICENSES/LGPL-3.0-or-later.txt
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||||
|
document, but changing it is not allowed.
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates the terms
|
||||||
|
and conditions of version 3 of the GNU General Public License, supplemented
|
||||||
|
by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser General
|
||||||
|
Public License, and the "GNU GPL" refers to version 3 of the GNU General Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License, other than
|
||||||
|
an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided by the
|
||||||
|
Library, but which is not otherwise based on the Library. Defining a subclass
|
||||||
|
of a class defined by the Library is deemed a mode of using an interface provided
|
||||||
|
by the Library.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an Application
|
||||||
|
with the Library. The particular version of the Library with which the Combined
|
||||||
|
Work was made is also called the "Linked Version".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the Corresponding
|
||||||
|
Source for the Combined Work, excluding any source code for portions of the
|
||||||
|
Combined Work that, considered in isolation, are based on the Application,
|
||||||
|
and not on the Linked Version.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the object
|
||||||
|
code and/or source code for the Application, including any data and utility
|
||||||
|
programs needed for reproducing the Combined Work from the Application, but
|
||||||
|
excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License without
|
||||||
|
being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a facility
|
||||||
|
refers to a function or data to be supplied by an Application that uses the
|
||||||
|
facility (other than as an argument passed when the facility is invoked),
|
||||||
|
then you may convey a copy of the modified version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to ensure
|
||||||
|
that, in the event an Application does not supply the function or data, the
|
||||||
|
facility still operates, and performs whatever part of its purpose remains
|
||||||
|
meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of this License
|
||||||
|
applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from a header
|
||||||
|
file that is part of the Library. You may convey such object code under terms
|
||||||
|
of your choice, provided that, if the incorporated material is not limited
|
||||||
|
to numerical parameters, data structure layouts and accessors, or small macros,
|
||||||
|
inline functions and templates (ten or fewer lines in length), you do both
|
||||||
|
of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the Library
|
||||||
|
is used in it and that the Library and its use are covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that, taken together,
|
||||||
|
effectively do not restrict modification of the portions of the Library contained
|
||||||
|
in the Combined Work and reverse engineering for debugging such modifications,
|
||||||
|
if you also do each of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that the Library
|
||||||
|
is used in it and that the Library and its use are covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during execution, include
|
||||||
|
the copyright notice for the Library among these notices, as well as a reference
|
||||||
|
directing the user to the copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this License,
|
||||||
|
and the Corresponding Application Code in a form suitable for, and under terms
|
||||||
|
that permit, the user to recombine or relink the Application with a modified
|
||||||
|
version of the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the Library. A
|
||||||
|
suitable mechanism is one that (a) uses at run time a copy of the Library
|
||||||
|
already present on the user's computer system, and (b) will operate properly
|
||||||
|
with a modified version of the Library that is interface-compatible with the
|
||||||
|
Linked Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise be required
|
||||||
|
to provide such information under section 6 of the GNU GPL, and only to the
|
||||||
|
extent that such information is necessary to install and execute a modified
|
||||||
|
version of the Combined Work produced by recombining or relinking the Application
|
||||||
|
with a modified version of the Linked Version. (If you use option 4d0, the
|
||||||
|
Installation Information must accompany the Minimal Corresponding Source and
|
||||||
|
Corresponding Application Code. If you use option 4d1, you must provide the
|
||||||
|
Installation Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the Library side
|
||||||
|
by side in a single library together with other library facilities that are
|
||||||
|
not Applications and are not covered by this License, and convey such a combined
|
||||||
|
library under terms of your choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based on the
|
||||||
|
Library, uncombined with any other library facilities, conveyed under the
|
||||||
|
terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it is a work
|
||||||
|
based on the Library, and explaining where to find the accompanying uncombined
|
||||||
|
form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of the
|
||||||
|
GNU Lesser General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to address
|
||||||
|
new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Library as you
|
||||||
|
received it specifies that a certain numbered version of the GNU Lesser General
|
||||||
|
Public License "or any later version" applies to it, you have the option of
|
||||||
|
following the terms and conditions either of that published version or of
|
||||||
|
any later version published by the Free Software Foundation. If the Library
|
||||||
|
as you received it does not specify a version number of the GNU Lesser General
|
||||||
|
Public License, you may choose any version of the GNU Lesser General Public
|
||||||
|
License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide whether
|
||||||
|
future versions of the GNU Lesser General Public License shall apply, that
|
||||||
|
proxy's public statement of acceptance of any version is permanent authorization
|
||||||
|
for you to choose that version for the Library.
|
@ -1,83 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** This file is part of the QML Presentation System.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** GNU General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU
|
|
||||||
** General Public License version 3.0 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU General Public License version 3.0 requirements will be
|
|
||||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2016 The Qt Company Ltd.
|
|
||||||
** Contact: https://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the QML Presentation System.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
|
||||||
** Commercial License Usage
|
|
||||||
** Licensees holding valid commercial Qt licenses may use this file in
|
|
||||||
** accordance with the commercial license agreement provided with the
|
|
||||||
** Software or, alternatively, in accordance with the terms contained in
|
|
||||||
** a written agreement between you and Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** GNU General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU
|
|
||||||
** General Public License version 3.0 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU General Public License version 3.0 requirements will be
|
|
||||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
|
||||||
**
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
Digia Qt LGPL Exception version 1.1
|
|
||||||
|
|
||||||
As an additional permission to the GNU Lesser General Public License version
|
|
||||||
2.1, the object code form of a "work that uses the Library" may incorporate
|
|
||||||
material from a header file that is part of the Library. You may distribute
|
|
||||||
such object code under terms of your choice, provided that:
|
|
||||||
(i) the header files of the Library have not been modified; and
|
|
||||||
(ii) the incorporated material is limited to numerical parameters, data
|
|
||||||
structure layouts, accessors, macros, inline functions and
|
|
||||||
templates; and
|
|
||||||
(iii) you comply with the terms of Section 6 of the GNU Lesser General
|
|
||||||
Public License version 2.1.
|
|
||||||
|
|
||||||
Moreover, you may apply this exception to a modified version of the Library,
|
|
||||||
provided that such modification does not involve copying material from the
|
|
||||||
Library into the modified Library's header files unless such material is
|
|
||||||
limited to (i) numerical parameters; (ii) data structure layouts;
|
|
||||||
(iii) accessors; and (iv) small macros, templates and inline functions of
|
|
||||||
five lines or less in length.
|
|
||||||
|
|
||||||
Furthermore, you are not required to apply this additional permission to a
|
|
||||||
modified version of the Library.
|
|
@ -1,209 +0,0 @@
|
|||||||
The Breeze Icon Theme in icons/
|
|
||||||
|
|
||||||
Copyright (C) 2014 Uri Herrera <uri_herrera@nitrux.in> and others
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 3 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library 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
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Clarification:
|
|
||||||
|
|
||||||
The GNU Lesser General Public License or LGPL is written for
|
|
||||||
software libraries in the first place. We expressly want the LGPL to
|
|
||||||
be valid for this artwork library too.
|
|
||||||
|
|
||||||
KDE Breeze theme icons is a special kind of software library, it is an
|
|
||||||
artwork library, it's elements can be used in a Graphical User Interface, or
|
|
||||||
GUI.
|
|
||||||
|
|
||||||
Source code, for this library means:
|
|
||||||
- where they exist, SVG;
|
|
||||||
- otherwise, if applicable, the multi-layered formats xcf or psd, or
|
|
||||||
otherwise png.
|
|
||||||
|
|
||||||
The LGPL in some sections obliges you to make the files carry
|
|
||||||
notices. With images this is in some cases impossible or hardly useful.
|
|
||||||
|
|
||||||
With this library a notice is placed at a prominent place in the directory
|
|
||||||
containing the elements. You may follow this practice.
|
|
||||||
|
|
||||||
The exception in section 5 of the GNU Lesser General Public License covers
|
|
||||||
the use of elements of this art library in a GUI.
|
|
||||||
|
|
||||||
https://vdesign.kde.org/
|
|
||||||
|
|
||||||
-----
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
|
|
||||||
This version of the GNU Lesser General Public License incorporates
|
|
||||||
the terms and conditions of version 3 of the GNU General Public
|
|
||||||
License, supplemented by the additional permissions listed below.
|
|
||||||
|
|
||||||
0. Additional Definitions.
|
|
||||||
|
|
||||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
|
||||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
|
||||||
General Public License.
|
|
||||||
|
|
||||||
"The Library" refers to a covered work governed by this License,
|
|
||||||
other than an Application or a Combined Work as defined below.
|
|
||||||
|
|
||||||
An "Application" is any work that makes use of an interface provided
|
|
||||||
by the Library, but which is not otherwise based on the Library.
|
|
||||||
Defining a subclass of a class defined by the Library is deemed a mode
|
|
||||||
of using an interface provided by the Library.
|
|
||||||
|
|
||||||
A "Combined Work" is a work produced by combining or linking an
|
|
||||||
Application with the Library. The particular version of the Library
|
|
||||||
with which the Combined Work was made is also called the "Linked
|
|
||||||
Version".
|
|
||||||
|
|
||||||
The "Minimal Corresponding Source" for a Combined Work means the
|
|
||||||
Corresponding Source for the Combined Work, excluding any source code
|
|
||||||
for portions of the Combined Work that, considered in isolation, are
|
|
||||||
based on the Application, and not on the Linked Version.
|
|
||||||
|
|
||||||
The "Corresponding Application Code" for a Combined Work means the
|
|
||||||
object code and/or source code for the Application, including any data
|
|
||||||
and utility programs needed for reproducing the Combined Work from the
|
|
||||||
Application, but excluding the System Libraries of the Combined Work.
|
|
||||||
|
|
||||||
1. Exception to Section 3 of the GNU GPL.
|
|
||||||
|
|
||||||
You may convey a covered work under sections 3 and 4 of this License
|
|
||||||
without being bound by section 3 of the GNU GPL.
|
|
||||||
|
|
||||||
2. Conveying Modified Versions.
|
|
||||||
|
|
||||||
If you modify a copy of the Library, and, in your modifications, a
|
|
||||||
facility refers to a function or data to be supplied by an Application
|
|
||||||
that uses the facility (other than as an argument passed when the
|
|
||||||
facility is invoked), then you may convey a copy of the modified
|
|
||||||
version:
|
|
||||||
|
|
||||||
a) under this License, provided that you make a good faith effort to
|
|
||||||
ensure that, in the event an Application does not supply the
|
|
||||||
function or data, the facility still operates, and performs
|
|
||||||
whatever part of its purpose remains meaningful, or
|
|
||||||
|
|
||||||
b) under the GNU GPL, with none of the additional permissions of
|
|
||||||
this License applicable to that copy.
|
|
||||||
|
|
||||||
3. Object Code Incorporating Material from Library Header Files.
|
|
||||||
|
|
||||||
The object code form of an Application may incorporate material from
|
|
||||||
a header file that is part of the Library. You may convey such object
|
|
||||||
code under terms of your choice, provided that, if the incorporated
|
|
||||||
material is not limited to numerical parameters, data structure
|
|
||||||
layouts and accessors, or small macros, inline functions and templates
|
|
||||||
(ten or fewer lines in length), you do both of the following:
|
|
||||||
|
|
||||||
a) Give prominent notice with each copy of the object code that the
|
|
||||||
Library is used in it and that the Library and its use are
|
|
||||||
covered by this License.
|
|
||||||
|
|
||||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
|
||||||
document.
|
|
||||||
|
|
||||||
4. Combined Works.
|
|
||||||
|
|
||||||
You may convey a Combined Work under terms of your choice that,
|
|
||||||
taken together, effectively do not restrict modification of the
|
|
||||||
portions of the Library contained in the Combined Work and reverse
|
|
||||||
engineering for debugging such modifications, if you also do each of
|
|
||||||
the following:
|
|
||||||
|
|
||||||
a) Give prominent notice with each copy of the Combined Work that
|
|
||||||
the Library is used in it and that the Library and its use are
|
|
||||||
covered by this License.
|
|
||||||
|
|
||||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
|
||||||
document.
|
|
||||||
|
|
||||||
c) For a Combined Work that displays copyright notices during
|
|
||||||
execution, include the copyright notice for the Library among
|
|
||||||
these notices, as well as a reference directing the user to the
|
|
||||||
copies of the GNU GPL and this license document.
|
|
||||||
|
|
||||||
d) Do one of the following:
|
|
||||||
|
|
||||||
0) Convey the Minimal Corresponding Source under the terms of this
|
|
||||||
License, and the Corresponding Application Code in a form
|
|
||||||
suitable for, and under terms that permit, the user to
|
|
||||||
recombine or relink the Application with a modified version of
|
|
||||||
the Linked Version to produce a modified Combined Work, in the
|
|
||||||
manner specified by section 6 of the GNU GPL for conveying
|
|
||||||
Corresponding Source.
|
|
||||||
|
|
||||||
1) Use a suitable shared library mechanism for linking with the
|
|
||||||
Library. A suitable mechanism is one that (a) uses at run time
|
|
||||||
a copy of the Library already present on the user's computer
|
|
||||||
system, and (b) will operate properly with a modified version
|
|
||||||
of the Library that is interface-compatible with the Linked
|
|
||||||
Version.
|
|
||||||
|
|
||||||
e) Provide Installation Information, but only if you would otherwise
|
|
||||||
be required to provide such information under section 6 of the
|
|
||||||
GNU GPL, and only to the extent that such information is
|
|
||||||
necessary to install and execute a modified version of the
|
|
||||||
Combined Work produced by recombining or relinking the
|
|
||||||
Application with a modified version of the Linked Version. (If
|
|
||||||
you use option 4d0, the Installation Information must accompany
|
|
||||||
the Minimal Corresponding Source and Corresponding Application
|
|
||||||
Code. If you use option 4d1, you must provide the Installation
|
|
||||||
Information in the manner specified by section 6 of the GNU GPL
|
|
||||||
for conveying Corresponding Source.)
|
|
||||||
|
|
||||||
5. Combined Libraries.
|
|
||||||
|
|
||||||
You may place library facilities that are a work based on the
|
|
||||||
Library side by side in a single library together with other library
|
|
||||||
facilities that are not Applications and are not covered by this
|
|
||||||
License, and convey such a combined library under terms of your
|
|
||||||
choice, if you do both of the following:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work based
|
|
||||||
on the Library, uncombined with any other library facilities,
|
|
||||||
conveyed under the terms of this License.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library that part of it
|
|
||||||
is a work based on the Library, and explaining where to find the
|
|
||||||
accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
6. Revised Versions of the GNU Lesser General Public License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions
|
|
||||||
of the GNU Lesser General Public License from time to time. Such new
|
|
||||||
versions will be similar in spirit to the present version, but may
|
|
||||||
differ in detail to address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Library as you received it specifies that a certain numbered version
|
|
||||||
of the GNU Lesser General Public License "or any later version"
|
|
||||||
applies to it, you have the option of following the terms and
|
|
||||||
conditions either of that published version or of any later version
|
|
||||||
published by the Free Software Foundation. If the Library as you
|
|
||||||
received it does not specify a version number of the GNU Lesser
|
|
||||||
General Public License, you may choose any version of the GNU Lesser
|
|
||||||
General Public License ever published by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Library as you received it specifies that a proxy can decide
|
|
||||||
whether future versions of the GNU Lesser General Public License shall
|
|
||||||
apply, that proxy's public statement of acceptance of any version is
|
|
||||||
permanent authorization for you to choose that version for the
|
|
||||||
Library.
|
|
@ -1,21 +0,0 @@
|
|||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Original Work Copyright (c) 2012-2015 Alexander Turkin
|
|
||||||
Modified 2014 by William Hallatt
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
|
||||||
the Software without restriction, including without limitation the rights to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
19
LICENSES/MIT.txt
Normal file
19
LICENSES/MIT.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
MIT License Copyright (c) <year> <copyright holders>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished
|
||||||
|
to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice (including the next
|
||||||
|
paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||||
|
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||||
|
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
89
README.md
89
README.md
@ -1,38 +1,69 @@
|
|||||||
### Calamares: Distribution-Independent Installer Framework
|
<!-- SPDX-FileCopyrightText: no
|
||||||
|
SPDX-License-Identifier: CC0-1.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Calamares: Distribution-Independent Installer Framework
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
[![Current issue](https://img.shields.io/badge/issue-in_progress-FE9B48)](https://github.com/calamares/calamares/labels/hacking%3A%20in-progress)
|
||||||
[![GitHub release](https://img.shields.io/github/release/calamares/calamares.svg)](https://github.com/calamares/calamares/releases)
|
[![GitHub release](https://img.shields.io/github/release/calamares/calamares.svg)](https://github.com/calamares/calamares/releases)
|
||||||
[![Travis Build Status](https://travis-ci.org/calamares/calamares.svg?branch=master)](https://travis-ci.org/calamares/calamares)
|
[![GitHub Build Status](https://img.shields.io/github/workflow/status/calamares/calamares/ci?label=GH%20build)](https://github.com/calamares/calamares/actions?query=workflow%3Aci)
|
||||||
[![Coverity Scan Build Status](https://scan.coverity.com/projects/5389/badge.svg)](https://scan.coverity.com/projects/5389)
|
[![GitHub license](https://img.shields.io/github/license/calamares/calamares.svg)](https://github.com/calamares/calamares/blob/calamares/LICENSES/GPL-3.0-or-later.txt)
|
||||||
[![GitHub license](https://img.shields.io/github/license/calamares/calamares.svg)](https://github.com/calamares/calamares/blob/master/LICENSE)
|
|
||||||
|
|
||||||
| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](https://github.com/calamares/calamares/wiki/Develop-Guide) | Freenode (IRC): #calamares | [Wiki](https://github.com/calamares/calamares/wiki) |
|
|
||||||
|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|:--------------------------:|
|
|
||||||
|
|
||||||
### Dependencies
|
| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/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) |
|
||||||
|
|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
|
||||||
Main:
|
|
||||||
* Compiler with C++14 support: GCC >= 5 or Clang >= 3.5.1
|
|
||||||
* CMake >= 3.3
|
|
||||||
* Qt >= 5.9
|
|
||||||
* yaml-cpp >= 0.5.1
|
|
||||||
* Python >= 3.3 (required for some modules)
|
|
||||||
* Boost.Python >= 1.55.0 (required for some modules)
|
|
||||||
* KDE extra-cmake-modules >= 5.18 (recommended; required for some modules;
|
|
||||||
required for some tests)
|
|
||||||
* KDE Frameworks KCoreAddons (>= 5.58 recommended)
|
|
||||||
* PythonQt (optional, deprecated)
|
|
||||||
|
|
||||||
Modules:
|
> Calamares is a distribution-independent system installer, with an advanced partitioning
|
||||||
* Individual modules may have their own requirements;
|
> feature for both manual and automated partitioning operations. Calamares is designed to
|
||||||
these are listed in CMake output. Particular requirements (not complete):
|
> be customizable by distribution maintainers without need for cumbersome patching,
|
||||||
* *fsresizer* KPMCore >= 3.3
|
> thanks to third party branding and external modules support.
|
||||||
* *partition* KPMCore >= 3.3
|
|
||||||
* *users* LibPWQuality (optional)
|
|
||||||
|
|
||||||
### Building
|
## Target Audience
|
||||||
|
|
||||||
See [wiki](https://github.com/calamares/calamares/wiki) for up to date
|
Calamares is a Linux installer; users who install Linux on a computer will hopefully
|
||||||
[building](https://github.com/calamares/calamares/wiki/Develop-Guide)
|
use it just **once**, to install their Linux distribution. Calamares is not
|
||||||
and [deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
|
a "ready to use" application: distributions apply a huge amount of customisation
|
||||||
instructions.
|
and configuration to Calamares, and the target audience for this repository
|
||||||
|
is those distributions, and the people who make those Linux distro's.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Getting Calamares
|
||||||
|
|
||||||
|
Clone Calamares from GitHub. The default branch is called *calamares*.
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/calamares/calamares.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Calamares is a KDE-Frameworks and Qt-based, C++17, CMake-built application.
|
||||||
|
The dependencies are explained in [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||||
|
|
||||||
|
## Contributing to Calamares
|
||||||
|
|
||||||
|
Calamares welcomes PRs. New issues are welcome, too.
|
||||||
|
There are both the Calamares **core** repository (this one),
|
||||||
|
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.
|
||||||
|
There is more information in the [CONTRIBUTING.md](CONTRIBUTING.md) file.
|
||||||
|
|
||||||
|
## Join the Conversation
|
||||||
|
|
||||||
|
GitHub Issues are **one** place for discussing Calamares if there are concrete
|
||||||
|
problems or a new feature to discuss.
|
||||||
|
|
||||||
|
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
|
||||||
|
room, `#calamares:kde.org`. The conversation is bridged with IRC
|
||||||
|
on [Libera.Chat](https://libera.chat/).
|
||||||
|
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.
|
||||||
|
|
||||||
|
* [![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)
|
||||||
|
@ -5,7 +5,7 @@ Name=Install System
|
|||||||
GenericName=System Installer
|
GenericName=System Installer
|
||||||
Keywords=calamares;system;installer;
|
Keywords=calamares;system;installer;
|
||||||
TryExec=calamares
|
TryExec=calamares
|
||||||
Exec=pkexec /usr/bin/calamares
|
Exec=sh -c "pkexec calamares"
|
||||||
Comment=Calamares — System Installer
|
Comment=Calamares — System Installer
|
||||||
Icon=calamares
|
Icon=calamares
|
||||||
Terminal=false
|
Terminal=false
|
||||||
@ -21,18 +21,38 @@ Name[as]=চিছটেম ইনস্তল কৰক
|
|||||||
Icon[as]=কেলামাৰেচ
|
Icon[as]=কেলামাৰেচ
|
||||||
GenericName[as]=চিছটেম ইনস্তলাৰ
|
GenericName[as]=চিছটেম ইনস্তলাৰ
|
||||||
Comment[as]=কেলামাৰেচ — চিছটেম ইনস্তলাৰ
|
Comment[as]=কেলামাৰেচ — চিছটেম ইনস্তলাৰ
|
||||||
|
Name[ast]=Instalar el sistema
|
||||||
|
Icon[ast]=calamares
|
||||||
|
GenericName[ast]=Instalador del sistema
|
||||||
|
Comment[ast]=Calamares — Instalador del sistema
|
||||||
|
Name[az]=Sistemi Quraşdırmaq
|
||||||
|
Icon[az]=calamares
|
||||||
|
GenericName[az]=Sistem Quraşdırıcısı
|
||||||
|
Comment[az]=Calamares Sistem Quraşdırıcısı
|
||||||
|
Name[az_AZ]=Sistemi quraşdırmaq
|
||||||
|
Icon[az_AZ]=calamares
|
||||||
|
GenericName[az_AZ]=Sistem quraşdırcısı
|
||||||
|
Comment[az_AZ]=Calamares — Sistem Quraşdırıcısı
|
||||||
Name[be]=Усталяваць сістэму
|
Name[be]=Усталяваць сістэму
|
||||||
Icon[be]=calamares
|
Icon[be]=calamares
|
||||||
GenericName[be]=Усталёўшчык сістэмы
|
GenericName[be]=Усталёўшчык сістэмы
|
||||||
Comment[be]=Calamares — усталёўшчык сістэмы
|
Comment[be]=Calamares — усталёўшчык сістэмы
|
||||||
Name[bg]=Инсталирай системата
|
Name[bg]=Инсталирай системата
|
||||||
Icon[bg]=calamares
|
Icon[bg]=calamares
|
||||||
GenericName[bg]=Системен Инсталатор
|
GenericName[bg]=Системен инсталатор
|
||||||
Comment[bg]=Calamares — Системен Инсталатор
|
Comment[bg]=„Calamares“ – Системен инсталатор
|
||||||
|
Name[bn]=সিস্টেম ইনস্টল করুন
|
||||||
|
Icon[bn]=ক্যালামারেস
|
||||||
|
GenericName[bn]=সিস্টেম ইনস্টলার
|
||||||
|
Comment[bn]=ক্যালামারেস - সিস্টেম ইনস্টলার
|
||||||
Name[ca]=Instal·la el sistema
|
Name[ca]=Instal·la el sistema
|
||||||
Icon[ca]=calamares
|
Icon[ca]=calamares
|
||||||
GenericName[ca]=Instal·lador de sistema
|
GenericName[ca]=Instal·lador de sistema
|
||||||
Comment[ca]=Calamares — Instal·lador de sistema
|
Comment[ca]=Calamares — Instal·lador de sistema
|
||||||
|
Name[cs_CZ]=Nainstalovat systém
|
||||||
|
Icon[cs_CZ]=calamares
|
||||||
|
GenericName[cs_CZ]=Instalátor systému
|
||||||
|
Comment[cs_CZ]=Calamares – instalátor operačních systémů
|
||||||
Name[da]=Installér system
|
Name[da]=Installér system
|
||||||
Icon[da]=calamares
|
Icon[da]=calamares
|
||||||
GenericName[da]=Systeminstallationsprogram
|
GenericName[da]=Systeminstallationsprogram
|
||||||
@ -49,10 +69,19 @@ Name[en_GB]=Install System
|
|||||||
Icon[en_GB]=calamares
|
Icon[en_GB]=calamares
|
||||||
GenericName[en_GB]=System Installer
|
GenericName[en_GB]=System Installer
|
||||||
Comment[en_GB]=Calamares — System Installer
|
Comment[en_GB]=Calamares — System Installer
|
||||||
Name[es]=Instalar Sistema
|
Name[eo]=Instali Sistemo
|
||||||
|
Icon[eo]=calamares
|
||||||
|
GenericName[eo]=Sistema Instalilo
|
||||||
|
Comment[eo]=Calamares — Sistema Instalilo
|
||||||
|
Name[es]=Instalar el sistema
|
||||||
Icon[es]=calamares
|
Icon[es]=calamares
|
||||||
GenericName[es]=Instalador del Sistema
|
GenericName[es]=Instalador del sistema
|
||||||
Comment[es]=Calamares — Instalador del Sistema
|
Comment[es]=Calamares — Instalador del sistema
|
||||||
|
Name[es_MX]=Instalar el Sistema
|
||||||
|
Icon[es_MX]=calamares
|
||||||
|
GenericName[es_MX]=Instalador del sistema
|
||||||
|
Comment[es_MX]=Calamares - Instalador del sistema
|
||||||
|
Name[es_PR]=Instalar el sistema
|
||||||
Name[et]=Paigalda süsteem
|
Name[et]=Paigalda süsteem
|
||||||
Icon[et]=calamares
|
Icon[et]=calamares
|
||||||
GenericName[et]=Süsteemipaigaldaja
|
GenericName[et]=Süsteemipaigaldaja
|
||||||
@ -61,11 +90,22 @@ Name[eu]=Sistema instalatu
|
|||||||
Icon[eu]=calamares
|
Icon[eu]=calamares
|
||||||
GenericName[eu]=Sistema instalatzailea
|
GenericName[eu]=Sistema instalatzailea
|
||||||
Comment[eu]=Calamares - sistema instalatzailea
|
Comment[eu]=Calamares - sistema instalatzailea
|
||||||
Name[es_PR]=Instalar el sistema
|
Name[fa]=نصب سامانه
|
||||||
|
Icon[fa]=کالامارس
|
||||||
|
GenericName[fa]=نصبکننده سامانه
|
||||||
|
Comment[fa]=کالامارس — نصبکننده سامانه
|
||||||
|
Name[fi_FI]=Asenna järjestelmä
|
||||||
|
Icon[fi_FI]=calamares
|
||||||
|
GenericName[fi_FI]=Järjestelmän asennusohjelma
|
||||||
|
Comment[fi_FI]=Calamares — Järjestelmän asentaja
|
||||||
Name[fr]=Installer le système
|
Name[fr]=Installer le système
|
||||||
Icon[fr]=calamares
|
Icon[fr]=calamares
|
||||||
GenericName[fr]=Installateur système
|
GenericName[fr]=Installateur système
|
||||||
Comment[fr]=Calamares - Installateur système
|
Comment[fr]=Calamares - Installateur système
|
||||||
|
Name[fur]=Instale il sisteme
|
||||||
|
Icon[fur]=calamares
|
||||||
|
GenericName[fur]=Program di instalazion dal sisteme
|
||||||
|
Comment[fur]=Calamares — Program di instalazion dal sisteme
|
||||||
Name[gl]=Instalación do Sistema
|
Name[gl]=Instalación do Sistema
|
||||||
Icon[gl]=calamares
|
Icon[gl]=calamares
|
||||||
GenericName[gl]=Instalador de sistemas
|
GenericName[gl]=Instalador de sistemas
|
||||||
@ -90,14 +130,18 @@ Name[id]=Instal Sistem
|
|||||||
Icon[id]=calamares
|
Icon[id]=calamares
|
||||||
GenericName[id]=Pemasang
|
GenericName[id]=Pemasang
|
||||||
Comment[id]=Calamares — Pemasang Sistem
|
Comment[id]=Calamares — Pemasang Sistem
|
||||||
|
Name[ie]=Installar li sistema
|
||||||
|
Icon[ie]=calamares
|
||||||
|
GenericName[ie]=Installator del sistema
|
||||||
|
Comment[ie]=Calamares — Installator del sistema
|
||||||
Name[is]=Setja upp kerfið
|
Name[is]=Setja upp kerfið
|
||||||
Icon[is]=calamares
|
Icon[is]=calamares
|
||||||
GenericName[is]=Kerfis uppsetning
|
GenericName[is]=Kerfis uppsetning
|
||||||
Comment[is]=Calamares — Kerfis uppsetning
|
Comment[is]=Calamares — Kerfis uppsetning
|
||||||
Name[cs_CZ]=Nainstalovat systém
|
Name[it_IT]=Installa il sistema
|
||||||
Icon[cs_CZ]=calamares
|
Icon[it_IT]=calamares
|
||||||
GenericName[cs_CZ]=Instalátor systému
|
GenericName[it_IT]=Programma d'installazione del sistema
|
||||||
Comment[cs_CZ]=Calamares – instalátor operačních systémů
|
Comment[it_IT]=Calamares — Programma d'installazione del sistema
|
||||||
Name[ja]=システムをインストール
|
Name[ja]=システムをインストール
|
||||||
Icon[ja]=calamares
|
Icon[ja]=calamares
|
||||||
GenericName[ja]=システムインストーラー
|
GenericName[ja]=システムインストーラー
|
||||||
@ -110,10 +154,6 @@ Name[lt]=Įdiegti Sistemą
|
|||||||
Icon[lt]=calamares
|
Icon[lt]=calamares
|
||||||
GenericName[lt]=Sistemos diegimas į kompiuterį
|
GenericName[lt]=Sistemos diegimas į kompiuterį
|
||||||
Comment[lt]=Calamares — Sistemos diegimo programa
|
Comment[lt]=Calamares — Sistemos diegimo programa
|
||||||
Name[it_IT]=Installa il sistema
|
|
||||||
Icon[it_IT]=calamares
|
|
||||||
GenericName[it_IT]=Programma d'installazione del sistema
|
|
||||||
Comment[it_IT]=Calamares — Programma d'installazione del sistema
|
|
||||||
Name[mk]=Инсталирај го системот
|
Name[mk]=Инсталирај го системот
|
||||||
Icon[mk]=calamares
|
Icon[mk]=calamares
|
||||||
GenericName[mk]=Системен Инсталер
|
GenericName[mk]=Системен Инсталер
|
||||||
@ -126,6 +166,10 @@ Name[nb]=Installer System
|
|||||||
Icon[nb]=calamares
|
Icon[nb]=calamares
|
||||||
GenericName[nb]=Systeminstallatør
|
GenericName[nb]=Systeminstallatør
|
||||||
Comment[nb]=Calamares-systeminstallatør
|
Comment[nb]=Calamares-systeminstallatør
|
||||||
|
Name[ne_NP]= सिस्टम इन्स्टल गर्नुहोस्
|
||||||
|
Icon[ne_NP]=Calamares
|
||||||
|
GenericName[ne_NP]=सिस्टम इन्स्टलर
|
||||||
|
Comment[ne_NP]=Calamares - सिस्टम इन्स्टलर
|
||||||
Name[nl]=Installeer systeem
|
Name[nl]=Installeer systeem
|
||||||
Icon[nl]=calamares
|
Icon[nl]=calamares
|
||||||
GenericName[nl]=Installatieprogramma
|
GenericName[nl]=Installatieprogramma
|
||||||
@ -138,6 +182,10 @@ Name[pt_BR]=Sistema de Instalação
|
|||||||
Icon[pt_BR]=calamares
|
Icon[pt_BR]=calamares
|
||||||
GenericName[pt_BR]=Instalador de Sistema
|
GenericName[pt_BR]=Instalador de Sistema
|
||||||
Comment[pt_BR]=Calamares — Instalador de Sistema
|
Comment[pt_BR]=Calamares — Instalador de Sistema
|
||||||
|
Name[pt_PT]=Instalar Sistema
|
||||||
|
Icon[pt_PT]=calamares
|
||||||
|
GenericName[pt_PT]=Instalador de Sistema
|
||||||
|
Comment[pt_PT]=Instalador de Sistema - Calamares
|
||||||
Name[ro]=Instalează sistemul
|
Name[ro]=Instalează sistemul
|
||||||
Icon[ro]=calamares
|
Icon[ro]=calamares
|
||||||
GenericName[ro]=Instalator de sistem
|
GenericName[ro]=Instalator de sistem
|
||||||
@ -146,6 +194,10 @@ Name[ru]=Установить систему
|
|||||||
Icon[ru]=calamares
|
Icon[ru]=calamares
|
||||||
GenericName[ru]=Установщик системы
|
GenericName[ru]=Установщик системы
|
||||||
Comment[ru]=Calamares - Установщик системы
|
Comment[ru]=Calamares - Установщик системы
|
||||||
|
Name[si]=පද්ධතිය ස්ථාපනය කරන්න
|
||||||
|
Icon[si]=කැලමරේස්
|
||||||
|
GenericName[si]=පද්ධති ස්ථාපකය
|
||||||
|
Comment[si]=Calamares - පද්ධති ස්ථාපකය
|
||||||
Name[sk]=Inštalovať systém
|
Name[sk]=Inštalovať systém
|
||||||
Icon[sk]=calamares
|
Icon[sk]=calamares
|
||||||
GenericName[sk]=Inštalátor systému
|
GenericName[sk]=Inštalátor systému
|
||||||
@ -155,24 +207,32 @@ Name[sq]=Instalo Sistemin
|
|||||||
Icon[sq]=calamares
|
Icon[sq]=calamares
|
||||||
GenericName[sq]=Instalues Sistemi
|
GenericName[sq]=Instalues Sistemi
|
||||||
Comment[sq]=Calamares — Instalues Sistemi
|
Comment[sq]=Calamares — Instalues Sistemi
|
||||||
Name[fi_FI]=Asenna Järjestelmä
|
|
||||||
Icon[fi_FI]=calamares
|
|
||||||
GenericName[fi_FI]=Järjestelmän Asennusohjelma
|
|
||||||
Comment[fi_FI]=Calamares — Järjestelmän Asentaja
|
|
||||||
Name[sr@latin]=Instaliraj sistem
|
|
||||||
Name[sr]=Инсталирај систем
|
Name[sr]=Инсталирај систем
|
||||||
Icon[sr]=calamares
|
Icon[sr]=calamares
|
||||||
GenericName[sr]=Инсталатер система
|
GenericName[sr]=Инсталатер система
|
||||||
Comment[sr]=Каламарес — инсталатер система
|
Comment[sr]=Каламарес — инсталатер система
|
||||||
|
Name[sr@latin]=Instaliraj sistem
|
||||||
Name[sv]=Installera system
|
Name[sv]=Installera system
|
||||||
Icon[sv]=calamares
|
Icon[sv]=calamares
|
||||||
GenericName[sv]=Systeminstallerare
|
GenericName[sv]=Systeminstallerare
|
||||||
Comment[sv]=Calamares — Systeminstallerare
|
Comment[sv]=Calamares — Systeminstallerare
|
||||||
|
Name[tg]=Насбкунии низом
|
||||||
|
Icon[tg]=calamares
|
||||||
|
GenericName[tg]=Насбкунандаи низомӣ
|
||||||
|
Comment[tg]=Calamares — Насбкунандаи низомӣ
|
||||||
Name[th]=ติดตั้งระบบ
|
Name[th]=ติดตั้งระบบ
|
||||||
|
Name[tr_TR]=Sistemi Yükle
|
||||||
|
Icon[tr_TR]=calamares
|
||||||
|
GenericName[tr_TR]=Sistem Yükleyici
|
||||||
|
Comment[tr_TR]=Calamares — Sistem Yükleyici
|
||||||
Name[uk]=Встановити Систему
|
Name[uk]=Встановити Систему
|
||||||
Icon[uk]=calamares
|
Icon[uk]=calamares
|
||||||
GenericName[uk]=Встановлювач системи
|
GenericName[uk]=Встановлювач системи
|
||||||
Comment[uk]=Calamares - Встановлювач системи
|
Comment[uk]=Calamares - Встановлювач системи
|
||||||
|
Name[vi]=Cài đặt hệ thống
|
||||||
|
Icon[vi]=calamares
|
||||||
|
GenericName[vi]=Bộ cài đặt hệ thống
|
||||||
|
Comment[vi]=Calamares — Bộ cài đặt hệ thống
|
||||||
Name[zh_CN]=安装系统
|
Name[zh_CN]=安装系统
|
||||||
Icon[zh_CN]=calamares
|
Icon[zh_CN]=calamares
|
||||||
GenericName[zh_CN]=系统安装程序
|
GenericName[zh_CN]=系统安装程序
|
||||||
@ -181,27 +241,3 @@ Name[zh_TW]=安裝系統
|
|||||||
Icon[zh_TW]=calamares
|
Icon[zh_TW]=calamares
|
||||||
GenericName[zh_TW]=系統安裝程式
|
GenericName[zh_TW]=系統安裝程式
|
||||||
Comment[zh_TW]=Calamares ── 系統安裝程式
|
Comment[zh_TW]=Calamares ── 系統安裝程式
|
||||||
Name[ast]=Instalar el sistema
|
|
||||||
Icon[ast]=calamares
|
|
||||||
GenericName[ast]=Instalador del sistema
|
|
||||||
Comment[ast]=Calamares — Instalador del sistema
|
|
||||||
Name[eo]=Instali Sistemo
|
|
||||||
Icon[eo]=calamares
|
|
||||||
GenericName[eo]=Sistema Instalilo
|
|
||||||
Comment[eo]=Calamares — Sistema Instalilo
|
|
||||||
Name[ne_NP]= सिस्टम इन्स्टल गर्नुहोस्
|
|
||||||
Icon[ne_NP]=Calamares
|
|
||||||
GenericName[ne_NP]=सिस्टम इन्स्टलर
|
|
||||||
Comment[ne_NP]=Calamares - सिस्टम इन्स्टलर
|
|
||||||
Name[es_MX]=Instalar el Sistema
|
|
||||||
Icon[es_MX]=calamares
|
|
||||||
GenericName[es_MX]=Instalador del sistema
|
|
||||||
Comment[es_MX]=Calamares - Instalador del sistema
|
|
||||||
Name[pt_PT]=Instalar Sistema
|
|
||||||
Icon[pt_PT]=calamares
|
|
||||||
GenericName[pt_PT]=Instalador de Sistema
|
|
||||||
Comment[pt_PT]=Calamares - Instalador de Sistema
|
|
||||||
Name[tr_TR]=Sistemi Yükle
|
|
||||||
Icon[tr_TR]=calamares
|
|
||||||
GenericName[tr_TR]=Sistem Yükleyici
|
|
||||||
Comment[tr_TR]=Calamares — Sistem Yükleyici
|
|
||||||
|
@ -5,7 +5,7 @@ Name=Install System
|
|||||||
GenericName=System Installer
|
GenericName=System Installer
|
||||||
Keywords=calamares;system;installer;
|
Keywords=calamares;system;installer;
|
||||||
TryExec=calamares
|
TryExec=calamares
|
||||||
Exec=pkexec /usr/bin/calamares
|
Exec=sh -c "pkexec calamares"
|
||||||
Comment=Calamares — System Installer
|
Comment=Calamares — System Installer
|
||||||
Icon=calamares
|
Icon=calamares
|
||||||
Terminal=false
|
Terminal=false
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
# AppImage building for Calamares
|
|
||||||
|
|
||||||
> It is possible to build Calamares as an AppImage (perhaps other
|
|
||||||
> containerized formats as well). This might make sense for
|
|
||||||
> OEM phase-1 deployments in environments where Calamares is
|
|
||||||
> not using the native toolkit.
|
|
||||||
|
|
||||||
## AppImage tools
|
|
||||||
|
|
||||||
You will need
|
|
||||||
- [`linuxdeploy-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy/releases)
|
|
||||||
- [`linuxdeploy-plugin-qt-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases)
|
|
||||||
- [`linuxdeploy-plugin-conda.sh`](https://github.com/linuxdeploy/linuxdeploy-plugin-conda)
|
|
||||||
|
|
||||||
These tools should run -- they are bundled as AppImages after all -- on
|
|
||||||
any modern Linux system. The [AppImage packaging documentation](https://docs.appimage.org/packaging-guide/)
|
|
||||||
explains how the whole tooling works.
|
|
||||||
|
|
||||||
If the tools are not present, the build script (see below) will download them,
|
|
||||||
but you should save them for later.
|
|
||||||
|
|
||||||
## AppImage build
|
|
||||||
|
|
||||||
From the **source** directory, run `ci/AppImage.sh`:
|
|
||||||
- Use `--tools-dir` to copy the tools from a local cache rather than
|
|
||||||
downloading them again.
|
|
||||||
- Run it with `--cmake-args` for special CMake handling.
|
|
||||||
- Use `--skip-build` to avoid rebuilding Calamares all the time.
|
|
||||||
- Use `--config-dir` to copy in Calamares configuration files (e.g.
|
|
||||||
*settings.conf* and the module configuration files) from a given
|
|
||||||
directory.
|
|
||||||
|
|
||||||
The build process will:
|
|
||||||
- copy (or download) the AppImage tools into a fresh build directory
|
|
||||||
- configure and build Calamares with suitable settings
|
|
||||||
- modifies the standard `.desktop` file to be AppImage-compatible
|
|
||||||
- builds the image with the AppImage tools
|
|
||||||
|
|
||||||
## AppImage caveats
|
|
||||||
|
|
||||||
The resulting AppImage, `Calamares-x86_64.AppImage`, can be run as if it is
|
|
||||||
a regular Calamares executable. For internal reasons it always passes the
|
|
||||||
`-X` flag; any other command-line flags are passed in unchanged. Internally,
|
|
||||||
`XDG_*_DIRS` are used to get Calamares to find the resources inside the AppImage
|
|
||||||
rather than in the host system.
|
|
@ -1,9 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
#
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
# Copyright 2019 Adriaan de Groot <groot@kde.org>
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions
|
# modification, are permitted provided that the following conditions
|
||||||
# are met:
|
# are met:
|
||||||
|
@ -1 +0,0 @@
|
|||||||
This has moved [to the wiki](https://github.com/calamares/calamares/wiki/Develop-Code).
|
|
180
ci/RELEASE.md
180
ci/RELEASE.md
@ -1,21 +1,41 @@
|
|||||||
# Calamares Release Process
|
# Calamares Release Process
|
||||||
|
|
||||||
|
<!-- SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
|
||||||
|
SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
> Calamares releases are now rolling when-they-are-ready releases.
|
> Calamares releases are now rolling when-they-are-ready releases.
|
||||||
> Releases are made from *master* and tagged there. When, in future,
|
> Releases are made from *calamares* and tagged there. When, in future,
|
||||||
> LTS releases resume, these steps may be edited again.
|
> LTS releases resume, these steps may be edited again.
|
||||||
>
|
>
|
||||||
> Most things are automated through the release script [RELEASE.sh](RELEASE.sh)
|
> Most things are automated through the release script [RELEASE.sh](RELEASE.sh)
|
||||||
|
|
||||||
## (0) A week in advance
|
## (0) During a release cycle
|
||||||
|
|
||||||
|
* Fetch latest translations from Transifex. We only push / pull translations
|
||||||
|
from *calamares* branch, so longer-lived branches (e.g. 3.1.x) don't get
|
||||||
|
translation updates. This is to keep the translation workflow simple.
|
||||||
|
The script automatically commits changes to the translations. It's ok
|
||||||
|
to do this during a release cycle. Run `sh ci/txpull.sh`
|
||||||
|
to fetch translations and commit the changes in one go.
|
||||||
|
* Push the strings to Transifex. From a checkout, run `ci/txpush.sh`
|
||||||
|
* Update the list of enabled translation languages in `CMakeLists.txt`.
|
||||||
|
Check the [translation site][transifex] for the list of languages with
|
||||||
|
fairly complete translations, or use `ci/txstats.py --edit` for an automated
|
||||||
|
suggestion. If there are changes, commit them.
|
||||||
|
|
||||||
|
## (1) Preparation
|
||||||
|
|
||||||
|
* Double-check the *CALAMARES_VERSION* value at the top of `CMakeLists.txt`.
|
||||||
|
* Set *CALAMARES_RELEASE_MODE* to `ON` in `CMakeLists.txt`.
|
||||||
|
* Edit `CHANGES-*` and set the date of the release. Pick the right
|
||||||
|
file for the release-stream.
|
||||||
|
* Commit both. This is usually done with commit-message
|
||||||
|
*Changes: pre-release housekeeping*.
|
||||||
|
|
||||||
|
## (2) Release Preparation
|
||||||
|
|
||||||
* Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
|
|
||||||
automatically once a week on master. The badge is displayed on the
|
|
||||||
project front page and in the wiki.
|
|
||||||
* Build with clang -Weverything, fix what's relevant.
|
|
||||||
```
|
|
||||||
rm -rf build ; mkdir build ; cd build
|
|
||||||
CC=clang CXX=clang++ cmake .. && make
|
|
||||||
```
|
|
||||||
* Make sure all tests pass.
|
* Make sure all tests pass.
|
||||||
```
|
```
|
||||||
make
|
make
|
||||||
@ -25,42 +45,16 @@
|
|||||||
an additional environment variable to be set for some tests, which will
|
an additional environment variable to be set for some tests, which will
|
||||||
destroy an attached disk. This is not always desirable. There are some
|
destroy an attached disk. This is not always desirable. There are some
|
||||||
sample config-files that are empty and which fail the config-tests.
|
sample config-files that are empty and which fail the config-tests.
|
||||||
* Notify [translators][transifex]. In the dashboard there is an *Announcements*
|
Note that the release script (see below) also runs the tests and
|
||||||
link that you can use to send a translation announcement. Note that regular
|
will bail out if any fail.
|
||||||
use of `txpush.sh` will notify translators as well of any changes.
|
* Make sure the translations are up-to-date. There is logic to check
|
||||||
|
for changes in translations: a movable tag *translations* indicates
|
||||||
[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview
|
when translations were last pushed, and the logic tries to enforce a
|
||||||
[transifex]: https://www.transifex.com/calamares/calamares/dashboard/
|
week of latency between push-translations and a release, to allow
|
||||||
|
translators to catch up. Run `ci/txcheck.sh` to confirm this.
|
||||||
|
Run `ci/txcheck.sh --cleanup` to tidy up afterwards, and possibly pass
|
||||||
## (1) Preparation
|
`-T` to the release script to skip the translation-age check if you
|
||||||
|
feel it is warranted.
|
||||||
* 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. The script
|
|
||||||
automatically commits changes to the translations.
|
|
||||||
```
|
|
||||||
sh ci/txpull.sh
|
|
||||||
```
|
|
||||||
* Update the list of enabled translation languages in `CMakeLists.txt`.
|
|
||||||
Check the [translation site][transifex] for the list of languages with
|
|
||||||
fairly complete translations, or use `ci/txstats.py` for an automated
|
|
||||||
suggestion. If there are changes, commit them.
|
|
||||||
* Push the changes.
|
|
||||||
* Drop the RC variable to 0 in `CMakeLists.txt`, *CALAMARES_VERSION_RC*.
|
|
||||||
* Check `README.md` and the
|
|
||||||
[Coding Guide](https://github.com/calamares/calamares/wiki/Develop-Code),
|
|
||||||
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.
|
|
||||||
* Edit `CHANGES` and set the date of the release.
|
|
||||||
* Commit both. This is usually done with commit-message
|
|
||||||
*Changes: pre-release housekeeping*.
|
|
||||||
|
|
||||||
|
|
||||||
## (2) Release Day
|
|
||||||
|
|
||||||
* Run the helper script `ci/RELEASE.sh` or follow steps below.
|
* Run the helper script `ci/RELEASE.sh` or follow steps below.
|
||||||
The script checks:
|
The script checks:
|
||||||
- for uncommitted local changes,
|
- for uncommitted local changes,
|
||||||
@ -73,54 +67,69 @@
|
|||||||
On success, it prints out a suitable signature- and SHA256 blurb
|
On success, it prints out a suitable signature- and SHA256 blurb
|
||||||
for use in the release announcement.
|
for use in the release announcement.
|
||||||
|
|
||||||
### (2.1) Buld and Test
|
## (3) Release
|
||||||
|
|
||||||
* Build with gcc. If available, build again with Clang and double-check
|
Follow the instructions printed by the release script.
|
||||||
any warnings Clang produces.
|
|
||||||
* Run the tests; `make test` in the build directory should have no
|
|
||||||
failures (or if there are, know why they are there).
|
|
||||||
|
|
||||||
### (2.2) Tag
|
* Push the tags.
|
||||||
|
* Create a new release on GitHub.
|
||||||
* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the
|
* Upload tarball and signature.
|
||||||
tag is shown as a verified tag. Do not sign -rc tags.
|
|
||||||
You can use `make show-version` in the build directory to get the right
|
|
||||||
version number -- this will fail if you didn't follow step (1).
|
|
||||||
|
|
||||||
### (2.3) Tarball
|
|
||||||
|
|
||||||
* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without
|
|
||||||
the helper script,
|
|
||||||
```
|
|
||||||
V=calamares-3.1.5
|
|
||||||
git archive -o $V.tar.gz --prefix $V/ master
|
|
||||||
```
|
|
||||||
Double check that the tarball matches the version number.
|
|
||||||
* Test tarball (e.g. unpack somewhere else and run the tests from step 0).
|
|
||||||
|
|
||||||
|
|
||||||
## (3) Housekeeping
|
|
||||||
|
|
||||||
* Generate MD5 and SHA256 checksums.
|
|
||||||
* Upload tarball.
|
|
||||||
* Announce on mailing list, notify packagers.
|
|
||||||
* Write release article.
|
|
||||||
* Publish tarball.
|
|
||||||
* Update download page.
|
|
||||||
* Publish release article on `calamares.io`.
|
* Publish release article on `calamares.io`.
|
||||||
* Publicize on social networks.
|
* Close associated milestone on GitHub if it's entirely done.
|
||||||
* Close associated milestone on GitHub if this is the actual release.
|
* Update topic on #calamares IRC channel.
|
||||||
* Publish blog post.
|
|
||||||
|
|
||||||
## (4) Post-Release
|
## (4) Post-Release
|
||||||
|
|
||||||
* Bump the version number in `CMakeLists.txt` in the `project()` command.
|
* Bump the version number in `CMakeLists.txt` in *CALAMARES_VERSION*.
|
||||||
* Set *CALAMARES_VERSION_RC* back to 1.
|
* Set *CALAMARES_RELEASE_MODE* back to `OFF`.
|
||||||
* Add a placeholder entry for the next release in `CHANGES` with date
|
* Add a placeholder entry for the next release in `CHANGES-*` with date
|
||||||
text *not released yet*.
|
text *not released yet*. See the text below, "Placeholder Release".
|
||||||
|
Add the placeholder to the right file for the release-stream.
|
||||||
* Commit and push that, usually with the message
|
* Commit and push that, usually with the message
|
||||||
*Changes: post-release housekeeping*.
|
*Changes: post-release housekeeping*.
|
||||||
|
|
||||||
|
# Related Material
|
||||||
|
|
||||||
|
> This section isn't directly related to any specific release,
|
||||||
|
> but bears on all releases.
|
||||||
|
|
||||||
|
## GPG Key Maintainence
|
||||||
|
|
||||||
|
Calamares uses GPG Keys for signing the tarballs and some commits
|
||||||
|
(tags, mostly). Calamares uses the **maintainer's** personal GPG
|
||||||
|
key for this. This section details some GPG activities that the
|
||||||
|
maintainer should do with those keys.
|
||||||
|
|
||||||
|
- Signing sub-key. It's convenient to use a signing sub-key specifically
|
||||||
|
for the signing of Calamares. To do so, add a key to the private key.
|
||||||
|
It's recommended to use key expiry, and to update signing keys periodically.
|
||||||
|
- Run `gpg -K` to find the key ID of your personal GPG secret key.
|
||||||
|
- Run `gpg --edit-key <keyid>` to edit that personal GPG key.
|
||||||
|
- In gpg edit-mode, use `addkey`, then pick a key type that is *sign-only*
|
||||||
|
(e.g. type 4, *RSA (sign only)*), then pick a keysize (3072 seems ok
|
||||||
|
as of 2020) and set a key expiry time, (e.g. in 18 months time).
|
||||||
|
- After generation, the secret key information is printed again, now
|
||||||
|
including the new signing subkey:
|
||||||
|
```
|
||||||
|
ssb rsa3072/0xCFDDC96F12B1915C
|
||||||
|
created: 2020-07-11 expires: 2022-01-02 usage: S
|
||||||
|
```
|
||||||
|
- Update the `RELEASE.sh` script with a new signing sub-key ID when a new
|
||||||
|
one is generated. Also announce the change of signing sub-key (e.g. on
|
||||||
|
the Calmares site or as part of a release announcement).
|
||||||
|
- Send the updated key to keyservers with `gpg --send-keys <keyid>`
|
||||||
|
- Optional: sanitize the keyring for use in development machines.
|
||||||
|
Export the current subkeys of the primary key and keep **only** those
|
||||||
|
secret keys around. There is documentation
|
||||||
|
[here](https://blog.tinned-software.net/create-gnupg-key-with-sub-keys-to-sign-encrypt-authenticate/)
|
||||||
|
but be careful.
|
||||||
|
- Export the public key material with `gpg --export --armor <keyid>`,
|
||||||
|
possibly also setting an output file.
|
||||||
|
- Upload that public key to the relevant GitHub profile.
|
||||||
|
- Upload that public key to the Calamares site.
|
||||||
|
|
||||||
|
## Placeholder Release Notes
|
||||||
|
|
||||||
```
|
```
|
||||||
# 3.2.XX (unreleased) #
|
# 3.2.XX (unreleased) #
|
||||||
|
|
||||||
@ -133,3 +142,4 @@ This release contains contributions from (alphabetically by first name):
|
|||||||
## Modules ##
|
## Modules ##
|
||||||
- No module changes yet
|
- No module changes yet
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
#
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
### USAGE
|
### USAGE
|
||||||
#
|
#
|
||||||
# Release script for Calamares
|
# Release script for Calamares
|
||||||
#
|
#
|
||||||
|
# NOTE: this script contains Linuxisms (in particular, expects GNU mktemp(1))
|
||||||
|
#
|
||||||
# This attempts to perform the different steps of the RELEASE.md
|
# This attempts to perform the different steps of the RELEASE.md
|
||||||
# document automatically. It's not tested on other machines or
|
# document automatically. It's not tested on other machines or
|
||||||
# setups other than [ade]'s development VM.
|
# setups other than [ade]'s development VM.
|
||||||
@ -70,6 +75,12 @@ fi
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
BUILDDIR=$(mktemp -d --suffix=-build --tmpdir=.)
|
BUILDDIR=$(mktemp -d --suffix=-build --tmpdir=.)
|
||||||
|
KEY_ID="328D742D8807A435"
|
||||||
|
|
||||||
|
# Try to make gpg cache the signing key, so we can leave the process
|
||||||
|
# to run and sign.
|
||||||
|
rm -f CMakeLists.txt.gpg
|
||||||
|
gpg -s -u $KEY_ID CMakeLists.txt
|
||||||
|
|
||||||
### Build with default compiler
|
### Build with default compiler
|
||||||
#
|
#
|
||||||
@ -78,7 +89,7 @@ if test "x$BUILD_DEFAULT" = "xtrue" ; then
|
|||||||
rm -rf "$BUILDDIR"
|
rm -rf "$BUILDDIR"
|
||||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
||||||
( cd "$BUILDDIR" && cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; exit 1 ; }
|
( cd "$BUILDDIR" && cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; exit 1 ; }
|
||||||
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR." ; exit 1 ; }
|
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR ." ; exit 1 ; }
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### Build with clang
|
### Build with clang
|
||||||
@ -95,7 +106,7 @@ if test "x$BUILD_CLANG" = "xtrue" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$BUILD_ONLY" = "xtrue" ; then
|
if test "x$BUILD_ONLY" = "xtrue" ; then
|
||||||
echo "Builds completed, release stopped. Build remains in $BUILDDIR."
|
echo "Builds completed, release stopped. Build remains in $BUILDDIR ."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -106,20 +117,19 @@ else
|
|||||||
# Presumably -B was given; just do the cmake part
|
# Presumably -B was given; just do the cmake part
|
||||||
rm -rf "$BUILDDIR"
|
rm -rf "$BUILDDIR"
|
||||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
||||||
( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; }
|
( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR ." ; exit 1 ; }
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### Get version number for this release
|
### Get version number for this release
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// )
|
V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// )
|
||||||
test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; }
|
test -n "$V" || { echo "Could not obtain version in $BUILDDIR ." ; exit 1 ; }
|
||||||
|
|
||||||
### Create signed tag
|
### Create signed tag
|
||||||
#
|
#
|
||||||
# This is the signing key ID associated with the GitHub account adriaandegroot,
|
# This is the signing key ID associated with the GitHub account adriaandegroot,
|
||||||
# which is used to create all "verified" tags in the Calamares repo.
|
# which is used to create all "verified" tags in the Calamares repo.
|
||||||
KEY_ID="128F00873E05AF1D"
|
|
||||||
git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; }
|
git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; }
|
||||||
|
|
||||||
### Create the tarball
|
### Create the tarball
|
||||||
@ -139,7 +149,8 @@ TMPDIR=$(mktemp -d --suffix="-calamares-$D")
|
|||||||
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
||||||
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
||||||
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
||||||
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR." ; exit 1 ; }
|
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR ." ; exit 1 ; }
|
||||||
|
gpg -s -u $KEY_ID --detach --armor $TAR_FILE # Sign the tarball
|
||||||
|
|
||||||
### Cleanup
|
### Cleanup
|
||||||
#
|
#
|
||||||
@ -152,7 +163,6 @@ rm -rf "$TMPDIR" # From tarball
|
|||||||
cat <<EOF
|
cat <<EOF
|
||||||
# Next steps for this release:
|
# Next steps for this release:
|
||||||
git push origin v$V
|
git push origin v$V
|
||||||
gpg -s -u $KEY_ID --detach --armor $TAR_FILE # Sign the tarball
|
|
||||||
# Upload tarball $TAR_FILE and the signature $TAR_FILE.asc
|
# Upload tarball $TAR_FILE and the signature $TAR_FILE.asc
|
||||||
# Announce via https://github.com/calamares/calamares/releases/new
|
# Announce via https://github.com/calamares/calamares/releases/new
|
||||||
# SHA256: $SHA256
|
# SHA256: $SHA256
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
# Do not create a backup file
|
# Do not create a backup file
|
||||||
suffix=none
|
suffix=none
|
||||||
|
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
# Calls astyle with settings matching Calamares coding style
|
# Calls astyle with settings matching Calamares coding style
|
||||||
# Requires astyle >= 2.04 and clang-format-7
|
# Requires astyle >= 2.04 and clang-format-8 or later
|
||||||
#
|
#
|
||||||
# You can pass in directory names, in which case the files
|
# You can pass in directory names, in which case the files
|
||||||
# in that directory (NOT below it) are processed.
|
# in that directory (NOT below it) are processed.
|
||||||
@ -11,20 +15,52 @@ LC_ALL=C
|
|||||||
LC_NUMERIC=C
|
LC_NUMERIC=C
|
||||||
export LANG LC_ALL LC_NUMERIC
|
export LANG LC_ALL LC_NUMERIC
|
||||||
|
|
||||||
|
BASEDIR=$(dirname $0)
|
||||||
|
TOPDIR=$( cd $BASEDIR/.. && pwd -P )
|
||||||
|
test -d "$BASEDIR" || { echo "! Could not determine base for $0" ; exit 1 ; }
|
||||||
|
test -d "$TOPDIR" || { echo "! Cound not determine top-level source dir" ; exit 1 ; }
|
||||||
|
test -f "$TOPDIR/.clang-format" || { echo "! No .clang-format support files in $TOPDIR" ; exit 1 ; }
|
||||||
|
|
||||||
AS=$( which astyle )
|
AS=$( which astyle )
|
||||||
|
|
||||||
for _cf in clang-format-7 clang-format-8 clang-format70 clang-format80 clang-format
|
# Allow specifying CF_VERSIONS outside already
|
||||||
|
CF_VERSIONS="$CF_VERSIONS clang-format13 clang-format-13 clang-format-13.0.1 clang-format12 clang-format-12 clang-format"
|
||||||
|
for _cf in $CF_VERSIONS
|
||||||
do
|
do
|
||||||
# Not an error if this particular clang-format isn't found
|
# Not an error if this particular clang-format isn't found
|
||||||
CF=$( which $_cf || true )
|
CF=$( which $_cf 2> /dev/null || true )
|
||||||
test -n "$CF" && break
|
test -n "$CF" && break
|
||||||
done
|
done
|
||||||
|
|
||||||
test -n "$AS" || { echo "! No astyle found in PATH"; exit 1 ; }
|
test -n "$AS" || { echo "! No astyle found in PATH"; exit 1 ; }
|
||||||
test -n "$CF" || { echo "! No clang-format-7 found in PATH"; exit 1 ; }
|
test -n "$CF" || { echo "! No clang-format ($CF_VERSIONS) found in PATH"; exit 1 ; }
|
||||||
test -x "$AS" || { echo "! $AS is not executable."; exit 1 ; }
|
test -x "$AS" || { echo "! $AS is not executable."; exit 1 ; }
|
||||||
test -x "$CF" || { echo "! $CF is not executable."; exit 1 ; }
|
test -x "$CF" || { echo "! $CF is not executable."; exit 1 ; }
|
||||||
|
|
||||||
|
### CLANG-FORMAT-WRANGLING
|
||||||
|
#
|
||||||
|
# Version 7 and earlier doesn't understand all the options we would like
|
||||||
|
# Version 12 handles lambdas nicely, so use that.
|
||||||
|
# Version 13 is also ok.
|
||||||
|
# Version 14 behaves differently with short-functions-in-class,
|
||||||
|
# spreading functions out that 13 keeps on one line. To avoid
|
||||||
|
# ping-pong commits, forbid 14.
|
||||||
|
|
||||||
|
format_version=`"$CF" --version | tr -dc '[^.0-9]' | cut -d . -f 1`
|
||||||
|
case "$format_version" in
|
||||||
|
12|13 )
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "! Clang-format version '$format_version' unsupported, versions 12 or 13 are ok."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
### FILE PROCESSING
|
||||||
|
#
|
||||||
|
#
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
any_dirs=no
|
any_dirs=no
|
||||||
@ -35,8 +71,10 @@ done
|
|||||||
|
|
||||||
style_some()
|
style_some()
|
||||||
{
|
{
|
||||||
$AS --options=$(dirname $0)/astylerc --quiet "$@"
|
if test -n "$*" ; then
|
||||||
$CF -i -style=file "$@"
|
$AS --options=$BASEDIR/astylerc --quiet "$@"
|
||||||
|
$CF -i -style=file "$@"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if test "x$any_dirs" = "xyes" ; then
|
if test "x$any_dirs" = "xyes" ; then
|
||||||
|
136
ci/configvalidator.py
Executable file
136
ci/configvalidator.py
Executable file
@ -0,0 +1,136 @@
|
|||||||
|
#! /usr/bin/env python3
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
usage = """
|
||||||
|
Validates a Calamares config file -- YAML syntax -- against a schema.
|
||||||
|
|
||||||
|
The schema is also written in YAML syntax, but the schema itself
|
||||||
|
is JSON-schema. This is possible because all JSON is YAML, and most
|
||||||
|
YAML is JSON. The limited subset of YAML that Calamares uses is
|
||||||
|
JSON-representable, anyway.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
configvalidator.py <schema> <file> ...
|
||||||
|
configvalidator.py -m <module>
|
||||||
|
configvalidator.py -x
|
||||||
|
|
||||||
|
Exits with value 0 on success, otherwise:
|
||||||
|
1 on missing dependencies
|
||||||
|
2 on invalid command-line arguments
|
||||||
|
3 on missing files
|
||||||
|
4 if files have invalid syntax
|
||||||
|
5 if files fail to validate
|
||||||
|
Use -x as only command-line argument to check the imports only.
|
||||||
|
|
||||||
|
Use -m <module> as shorthand for standard paths in src/modules/<module>/
|
||||||
|
"""
|
||||||
|
|
||||||
|
# The schemata originally lived outside the Calamares repository,
|
||||||
|
# without documented tooling. By putting them in the repository
|
||||||
|
# with the example files and explicit tooling, there's a better
|
||||||
|
# chance of them catching problems and acting as documentation.
|
||||||
|
|
||||||
|
dependencies = """
|
||||||
|
Dependencies for this tool are: py-yaml and py-jsonschema.
|
||||||
|
|
||||||
|
https://pyyaml.org/
|
||||||
|
https://github.com/Julian/jsonschema
|
||||||
|
|
||||||
|
Simple installation is `pip install pyyaml jsonschema`
|
||||||
|
"""
|
||||||
|
|
||||||
|
ERR_IMPORT, ERR_USAGE, ERR_FILE_NOT_FOUND, ERR_SYNTAX, ERR_INVALID = range(1,6)
|
||||||
|
|
||||||
|
### DEPENDENCIES
|
||||||
|
#
|
||||||
|
#
|
||||||
|
try:
|
||||||
|
from jsonschema import validate, SchemaError, ValidationError
|
||||||
|
from jsonschema import draft7_format_checker
|
||||||
|
from yaml import safe_load, YAMLError
|
||||||
|
except ImportError as e:
|
||||||
|
print(e)
|
||||||
|
print(dependencies)
|
||||||
|
exit(ERR_IMPORT)
|
||||||
|
|
||||||
|
from os.path import exists
|
||||||
|
import sys
|
||||||
|
|
||||||
|
### INPUT VALIDATION
|
||||||
|
#
|
||||||
|
#
|
||||||
|
if len(sys.argv) < 3:
|
||||||
|
# Special-case: called with -x to just test the imports
|
||||||
|
if len(sys.argv) == 2 and sys.argv[1] == "-x":
|
||||||
|
exit(0)
|
||||||
|
print(usage)
|
||||||
|
exit(ERR_USAGE)
|
||||||
|
|
||||||
|
if len(sys.argv) == 3 and sys.argv[1] == "-m":
|
||||||
|
module = sys.argv[2]
|
||||||
|
schema_file_name = f"src/modules/{module}/{module}.schema.yaml"
|
||||||
|
config_file_names = [ f"src/modules/{module}/{module}.conf" ]
|
||||||
|
else:
|
||||||
|
schema_file_name = sys.argv[1]
|
||||||
|
config_file_names = sys.argv[2:]
|
||||||
|
|
||||||
|
if not exists(schema_file_name):
|
||||||
|
print(usage)
|
||||||
|
print("\nSchema file '{}' does not exist.".format(schema_file_name))
|
||||||
|
exit(ERR_FILE_NOT_FOUND)
|
||||||
|
for f in config_file_names:
|
||||||
|
if not exists(f):
|
||||||
|
print(usage)
|
||||||
|
print("\nYAML file '{}' does not exist.".format(f))
|
||||||
|
exit(ERR_FILE_NOT_FOUND)
|
||||||
|
|
||||||
|
### FILES SYNTAX CHECK
|
||||||
|
#
|
||||||
|
#
|
||||||
|
with open(schema_file_name, "r") as data:
|
||||||
|
try:
|
||||||
|
schema = safe_load(data)
|
||||||
|
except YAMLError as e:
|
||||||
|
print("Schema error: {} {}.".format(e.problem, e.problem_mark))
|
||||||
|
print("\nSchema file '{}' is invalid YAML.".format(schema_file_name))
|
||||||
|
exit(ERR_SYNTAX)
|
||||||
|
|
||||||
|
try:
|
||||||
|
validate(instance={}, schema=schema)
|
||||||
|
# While developing the schemata, get full exceptions from schema failure
|
||||||
|
except SchemaError as e:
|
||||||
|
print(e)
|
||||||
|
print("\nSchema file '{}' is invalid JSON-Schema.".format(schema_file_name))
|
||||||
|
exit(ERR_INVALID)
|
||||||
|
except ValidationError:
|
||||||
|
# Just means that empty isn't valid, but the Schema itself is
|
||||||
|
pass
|
||||||
|
|
||||||
|
configs = []
|
||||||
|
for f in config_file_names:
|
||||||
|
config = None
|
||||||
|
with open(f, "r") as data:
|
||||||
|
try:
|
||||||
|
config = safe_load(data)
|
||||||
|
except YAMLError as e:
|
||||||
|
print("YAML error: {} {}.".format(e.problem, e.problem_mark))
|
||||||
|
print("\nYAML file '{}' is invalid.".format(f))
|
||||||
|
exit(ERR_SYNTAX)
|
||||||
|
if config is None:
|
||||||
|
print("YAML file '{}' is empty.".format(f))
|
||||||
|
configs.append(config)
|
||||||
|
|
||||||
|
assert len(configs) == len(config_file_names), "Not all configurations loaded."
|
||||||
|
|
||||||
|
### SCHEMA VALIDATION
|
||||||
|
#
|
||||||
|
#
|
||||||
|
for c, f in zip(configs, config_file_names):
|
||||||
|
try:
|
||||||
|
validate(instance=c, schema=schema)
|
||||||
|
except ValidationError as e:
|
||||||
|
print(e)
|
||||||
|
print("\nConfig file '{}' does not validate in schema.".format(f))
|
||||||
|
exit(ERR_INVALID)
|
@ -3,4 +3,7 @@
|
|||||||
|
|
||||||
Calamares doesn't seem to geenerate any false positives,
|
Calamares doesn't seem to geenerate any false positives,
|
||||||
so the model-file is empty.
|
so the model-file is empty.
|
||||||
|
|
||||||
|
SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||||
|
SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cd "$WORKSPACE"
|
|
||||||
cppcheck --enable=all --inconclusive --xml --xml-version=2 src 2> cppcheck.xml
|
|
9
ci/libcalamares/__init__.py
Normal file
9
ci/libcalamares/__init__.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Stubs for part of the Python API from libcalamares
|
||||||
|
# (although the **actual** API is presented through
|
||||||
|
# Boost::Python, not as a bare C-extension) so that
|
||||||
|
# pylint doesn't complain about libcalamares internals.
|
||||||
|
|
||||||
|
VERSION_SHORT="1.0"
|
24
ci/libcalamares/globalstorage.py
Normal file
24
ci/libcalamares/globalstorage.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Stubs for part of the Python API from libcalamares
|
||||||
|
# (although the **actual** API is presented through
|
||||||
|
# Boost::Python, not as a bare C-extension) so that
|
||||||
|
# pylint doesn't complain about libcalamares internals.
|
||||||
|
|
||||||
|
def count(): return 1
|
||||||
|
|
||||||
|
def keys(): return []
|
||||||
|
|
||||||
|
def contains(_): return True
|
||||||
|
|
||||||
|
def value(key):
|
||||||
|
if key in ("branding",):
|
||||||
|
return dict()
|
||||||
|
if key in ("partitions",):
|
||||||
|
return list()
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def insert(key, value): pass
|
||||||
|
|
||||||
|
def remove(_): pass
|
15
ci/libcalamares/job.py
Normal file
15
ci/libcalamares/job.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Stubs for part of the Python API from libcalamares
|
||||||
|
# (although the **actual** API is presented through
|
||||||
|
# Boost::Python, not as a bare C-extension) so that
|
||||||
|
# pylint doesn't complain about libcalamares internals.
|
||||||
|
|
||||||
|
configuration = dict()
|
||||||
|
|
||||||
|
def setprogress(_): pass
|
||||||
|
|
||||||
|
def pretty_name(): return ""
|
||||||
|
|
||||||
|
def working_path(): return ""
|
27
ci/libcalamares/utils.py
Normal file
27
ci/libcalamares/utils.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Stubs for part of the Python API from libcalamares
|
||||||
|
# (although the **actual** API is presented through
|
||||||
|
# Boost::Python, not as a bare C-extension) so that
|
||||||
|
# pylint doesn't complain about libcalamares internals.
|
||||||
|
|
||||||
|
def debug(_): pass
|
||||||
|
|
||||||
|
def warning(_): pass
|
||||||
|
|
||||||
|
def error(_): pass
|
||||||
|
|
||||||
|
def gettext_path(): pass
|
||||||
|
|
||||||
|
def gettext_languages(): pass
|
||||||
|
|
||||||
|
def target_env_call(_): return 0
|
||||||
|
|
||||||
|
def check_target_env_call(_): pass
|
||||||
|
|
||||||
|
def target_env_process_output(cmd, *args): return 0
|
||||||
|
|
||||||
|
def host_env_process_output(cmd, *args): return 0
|
||||||
|
|
||||||
|
def mount(device, mountpoint, fstype, options): return 0
|
@ -1,13 +0,0 @@
|
|||||||
# Build configuration on Travis.
|
|
||||||
#
|
|
||||||
# Defines a CMAKE_ARGS variable for use with cmake
|
|
||||||
#
|
|
||||||
# This file is sourced by travis.sh, and exports the variables
|
|
||||||
# to the environment.
|
|
||||||
CMAKE_ARGS="\
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DWEBVIEW_FORCE_WEBKIT=1 \
|
|
||||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
|
|
||||||
-DWITH_PYTHONQT=OFF"
|
|
||||||
|
|
||||||
export CMAKE_ARGS
|
|
@ -1,55 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Travis CI script for use on every-commit:
|
|
||||||
# - build and install Calamares
|
|
||||||
#
|
|
||||||
test -n "$BUILDDIR" || { echo "! \$BUILDDIR not set" ; exit 1 ; }
|
|
||||||
test -n "$SRCDIR" || { echo "! \$SRCDIR not set" ; exit 1 ; }
|
|
||||||
|
|
||||||
test -d $BUILDDIR || { echo "! $BUILDDIR not a directory" ; exit 1 ; }
|
|
||||||
test -d $SRCDIR || { echo "! $SRCDIR not a directory" ; exit 1 ; }
|
|
||||||
test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $SRCDIR/CMakeLists.txt" ; exit 1 ; }
|
|
||||||
|
|
||||||
cd $BUILDDIR || exit 1
|
|
||||||
|
|
||||||
section() {
|
|
||||||
echo "###"
|
|
||||||
echo "### $1"
|
|
||||||
echo "###"
|
|
||||||
pwd -P
|
|
||||||
df -h
|
|
||||||
}
|
|
||||||
|
|
||||||
section "cmake $CMAKE_ARGS $SRCDIR"
|
|
||||||
cmake $CMAKE_ARGS $SRCDIR || { echo "! CMake failed" ; exit 1 ; }
|
|
||||||
|
|
||||||
section "make"
|
|
||||||
make -j2 || { echo "! Make recheck" ; pwd -P ; df -h ; make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; }
|
|
||||||
|
|
||||||
section "make install"
|
|
||||||
|
|
||||||
install_debugging() {
|
|
||||||
ls -la $( find "$1" -type f -name '*.so' )
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "# Build results"
|
|
||||||
install_debugging "$BUILDDIR"
|
|
||||||
|
|
||||||
echo "# Install"
|
|
||||||
DESTDIR=/build/INSTALL_ROOT
|
|
||||||
mkdir -p "$DESTDIR"
|
|
||||||
|
|
||||||
if make install VERBOSE=1 DESTDIR="$DESTDIR" ;
|
|
||||||
then
|
|
||||||
echo "# .. install OK"
|
|
||||||
result=true
|
|
||||||
else
|
|
||||||
echo "# .. install failed"
|
|
||||||
result=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
section "Install results"
|
|
||||||
install_debugging "$DESTDIR"
|
|
||||||
|
|
||||||
$result || { echo "! Install failed" ; exit 1 ; } # Result of make install, above
|
|
@ -1,34 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Travis CI script for weekly (cron) use:
|
|
||||||
# - use the coverity tool to build and and upload results
|
|
||||||
#
|
|
||||||
test -n "$COVERITY_SCAN_TOKEN" || { echo "! Missing Coverity token" ; exit 1 ; }
|
|
||||||
test -n "$BUILDDIR" || { echo "! \$BUILDDIR not set" ; exit 1 ; }
|
|
||||||
test -n "$SRCDIR" || { echo "! \$SRCDIR not set" ; exit 1 ; }
|
|
||||||
|
|
||||||
test -d $BUILDDIR || { echo "! $BUILDDIR not a directory" ; exit 1 ; }
|
|
||||||
test -d $SRCDIR || { echo "! $SRCDIR not a directory" ; exit 1 ; }
|
|
||||||
test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $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"
|
|
||||||
|
|
||||||
echo "# cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $SRCDIR"
|
|
||||||
cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $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
|
|
21
ci/travis.sh
21
ci/travis.sh
@ -1,21 +0,0 @@
|
|||||||
#! /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" || { echo "! No directory $D" ; exit 1 ; }
|
|
||||||
test -x "$D/travis-continuous.sh" || { echo "! Missing -continuous" ; exit 1 ; }
|
|
||||||
test -x "$D/travis-coverity.sh" || { echo "! Missing -coverity" ; exit 1 ; }
|
|
||||||
|
|
||||||
test -f "$D/travis-config.sh" && . "$D/travis-config.sh"
|
|
||||||
|
|
||||||
if test "$TRAVIS_EVENT_TYPE" = "cron" ; then
|
|
||||||
exec "$D/travis-coverity.sh"
|
|
||||||
else
|
|
||||||
exec "$D/travis-continuous.sh"
|
|
||||||
fi
|
|
8
ci/txcheck.sh
Normal file → Executable file
8
ci/txcheck.sh
Normal file → Executable file
@ -1,10 +1,10 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
### LICENSE
|
### LICENSE
|
||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
# SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot <groot@kde.org>
|
# SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
# This file is Free Software: you can redistribute it and/or modify
|
# This file is Free Software: you can redistribute it and/or modify
|
||||||
# it under the terms of the 2-clause BSD License.
|
# it under the terms of the 2-clause BSD License.
|
||||||
@ -29,7 +29,7 @@
|
|||||||
### END USAGE
|
### END USAGE
|
||||||
|
|
||||||
# The files that are translated; should match the contents of .tx/config
|
# The files that are translated; should match the contents of .tx/config
|
||||||
TX_FILE_LIST="lang/calamares_en.ts lang/python.pot src/modules/dummypythonqt/lang/dummypythonqt.pot calamares.desktop"
|
TX_FILE_LIST="lang/calamares_en.ts lang/python.pot calamares.desktop"
|
||||||
|
|
||||||
### COMMAND ARGUMENTS
|
### COMMAND ARGUMENTS
|
||||||
#
|
#
|
||||||
@ -125,7 +125,7 @@ tx_sum()
|
|||||||
|
|
||||||
# Remove linenumbers from .ts (XML) and .pot
|
# Remove linenumbers from .ts (XML) and .pot
|
||||||
sed -i'' -e '/<location filename/d' "$WORKTREE_NAME/lang/calamares_en.ts"
|
sed -i'' -e '/<location filename/d' "$WORKTREE_NAME/lang/calamares_en.ts"
|
||||||
sed -i'' -e '/^#: src..*[0-9]$/d' $WORKTREE_NAME/lang/python.pot $WORKTREE_NAME/src/modules/dummypythonqt/lang/dummypythonqt.pot
|
sed -i'' -e '/^#: src..*[0-9]$/d' $WORKTREE_NAME/lang/python.pot
|
||||||
|
|
||||||
_SUM=$( cd $WORKTREE_NAME && cat $TX_FILE_LIST | $SHA256 )
|
_SUM=$( cd $WORKTREE_NAME && cat $TX_FILE_LIST | $SHA256 )
|
||||||
echo "$_SUM"
|
echo "$_SUM"
|
||||||
|
68
ci/txpull.sh
68
ci/txpull.sh
@ -1,11 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
### LICENSE
|
### LICENSE
|
||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot <groot@kde.org>
|
|
||||||
# SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
|
# SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
# This file is Free Software: you can redistribute it and/or modify
|
# This file is Free Software: you can redistribute it and/or modify
|
||||||
# it under the terms of the 2-clause BSD License.
|
# it under the terms of the 2-clause BSD License.
|
||||||
@ -23,20 +23,15 @@
|
|||||||
#
|
#
|
||||||
### END USAGE
|
### END USAGE
|
||||||
|
|
||||||
### INITIAL SETUP
|
### SANITY CHECKING
|
||||||
#
|
#
|
||||||
# This stuff needs to be done once; in a real CI environment where it
|
# The script needs a .tx/config to talk to the Transifex server;
|
||||||
# runs regularly in a container, the setup needs to be done when
|
# it also checks that it is run from the top-level of a Calamares
|
||||||
# creating the container.
|
# checkout. In order to use the system overall, you'll also need:
|
||||||
|
# - ~/.gitconfig (For the git commits this does)
|
||||||
|
# - ~/.transifexrc (Password token for Transifex)
|
||||||
|
# - ~/.ssh (For git commits)
|
||||||
#
|
#
|
||||||
#
|
|
||||||
# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings
|
|
||||||
# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings
|
|
||||||
# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github
|
|
||||||
#
|
|
||||||
# cd "$WORKSPACE"
|
|
||||||
# git config --global http.sslVerify false
|
|
||||||
|
|
||||||
test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||||
test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||||
test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||||
@ -69,14 +64,11 @@ tx pull --force --source --all
|
|||||||
# so clean them up after pulling.
|
# so clean them up after pulling.
|
||||||
#
|
#
|
||||||
drop_language() {
|
drop_language() {
|
||||||
rm -rf lang/python/"$1" src/modules/dummypythonqt/lang/"$1" lang/calamares_"$1".ts
|
rm -rf lang/python/"$1" lang/calamares_"$1".ts
|
||||||
grep -v "\\[$1]" calamares.desktop > calamares.desktop.new
|
grep -v "\\[$1]" calamares.desktop > calamares.desktop.new
|
||||||
mv calamares.desktop.new calamares.desktop
|
mv calamares.desktop.new calamares.desktop
|
||||||
}
|
}
|
||||||
|
|
||||||
drop_language es_ES
|
|
||||||
drop_language pl_PL
|
|
||||||
|
|
||||||
# Also fix the .desktop file, which has some fields removed by Transifex.
|
# Also fix the .desktop file, which has some fields removed by Transifex.
|
||||||
#
|
#
|
||||||
{ cat calamares.desktop.in ; grep "\\[[a-zA-Z_@]*]=" calamares.desktop ; } > calamares.desktop.new
|
{ cat calamares.desktop.in ; grep "\\[[a-zA-Z_@]*]=" calamares.desktop ; } > calamares.desktop.new
|
||||||
@ -113,6 +105,21 @@ awk '
|
|||||||
skip=0; print $0;
|
skip=0; print $0;
|
||||||
}}' < calamares.desktop > calamares.desktop.new
|
}}' < calamares.desktop > calamares.desktop.new
|
||||||
mv calamares.desktop.new calamares.desktop
|
mv calamares.desktop.new calamares.desktop
|
||||||
|
# Now group translated key-names (Name, Icon, Description, ..) by sorted
|
||||||
|
# language key rather than random-ish language-key order (which shuffles
|
||||||
|
# entries around).
|
||||||
|
#
|
||||||
|
# First, the non-translated lines
|
||||||
|
grep -v '\[.*\]=' calamares.desktop > calamares.desktop.new
|
||||||
|
# The translated lines:
|
||||||
|
# - replace (the first) [] by | so we have a consistent field separator
|
||||||
|
# - sort based on field 2, then 1 (language code, then reversed key-name)
|
||||||
|
# - replace the first | by [, the first (remaining) | by ]
|
||||||
|
# Effectively this puts the fields in this order: Name, Icon, Generic Name,
|
||||||
|
# Comment -- within each language key. This keeps churn down since the
|
||||||
|
# language codes and key-names are constant.
|
||||||
|
grep '\[.*\]=' calamares.desktop | sed -e 's/\[/|/' -e 's/\]/|/' | sort -t '|' -k 2,2 -k 1,1r | sed -e 's/|/\[/' | sed -e 's/|/\]/' >> calamares.desktop.new
|
||||||
|
mv calamares.desktop.new calamares.desktop
|
||||||
git add --verbose calamares.desktop
|
git add --verbose calamares.desktop
|
||||||
git commit "$AUTHOR" --message="i18n: [desktop] $BOILERPLATE" | true
|
git commit "$AUTHOR" --message="i18n: [desktop] $BOILERPLATE" | true
|
||||||
|
|
||||||
@ -121,6 +128,19 @@ git commit "$AUTHOR" --message="i18n: [desktop] $BOILERPLATE" | true
|
|||||||
# PO-Created line). This applies only to modules which use po-files.
|
# PO-Created line). This applies only to modules which use po-files.
|
||||||
git diff --numstat src/modules | awk '($1==1 && $2==1){print $3}' | xargs git checkout --
|
git diff --numstat src/modules | awk '($1==1 && $2==1){print $3}' | xargs git checkout --
|
||||||
|
|
||||||
|
# sed either wants -i'' (GNU sed) or -i '' (BSD sed) to
|
||||||
|
# replace in a file, with no backup extension. Define
|
||||||
|
# a `reinplace` command to deal with the difference.
|
||||||
|
if test FreeBSD = `uname` ; then
|
||||||
|
reinplace() {
|
||||||
|
sed -i '' "$@"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
reinplace() {
|
||||||
|
sed -i'' "$@"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
# Go through the Python modules; those with a lang/ subdir have their
|
# Go through the Python modules; those with a lang/ subdir have their
|
||||||
# own complete gettext-based setup.
|
# own complete gettext-based setup.
|
||||||
for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
||||||
@ -130,8 +150,8 @@ for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
|||||||
if [ -d ${MODULE_DIR}/lang ]; then
|
if [ -d ${MODULE_DIR}/lang ]; then
|
||||||
# Convert PO files to MO files
|
# Convert PO files to MO files
|
||||||
for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do
|
for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do
|
||||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
reinplace '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
||||||
msgfmt -o ${POFILE%.po}.mo $POFILE
|
# msgfmt -o ${POFILE%.po}.mo $POFILE
|
||||||
done
|
done
|
||||||
git add --verbose ${MODULE_DIR}/lang/*
|
git add --verbose ${MODULE_DIR}/lang/*
|
||||||
git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true
|
git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true
|
||||||
@ -140,10 +160,8 @@ for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
for POFILE in $(find lang -name "python.po") ; do
|
for POFILE in $(find lang -name "python.po") ; do
|
||||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
reinplace '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
||||||
msgfmt -o ${POFILE%.po}.mo $POFILE
|
# msgfmt -o ${POFILE%.po}.mo $POFILE
|
||||||
done
|
done
|
||||||
git add --verbose lang/python*
|
git add --verbose lang/python*
|
||||||
git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true
|
git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true
|
||||||
|
|
||||||
# git push --set-upstream origin master
|
|
||||||
|
38
ci/txpush.sh
38
ci/txpush.sh
@ -1,11 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
### LICENSE
|
### LICENSE
|
||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot <groot@kde.org>
|
|
||||||
# SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
|
# SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
# This file is Free Software: you can redistribute it and/or modify
|
# This file is Free Software: you can redistribute it and/or modify
|
||||||
# it under the terms of the 2-clause BSD License.
|
# it under the terms of the 2-clause BSD License.
|
||||||
@ -29,20 +29,15 @@
|
|||||||
#
|
#
|
||||||
### END USAGE
|
### END USAGE
|
||||||
|
|
||||||
### INITIAL SETUP
|
### SANITY CHECKING
|
||||||
#
|
#
|
||||||
# This stuff needs to be done once; in a real CI environment where it
|
# The script needs a .tx/config to talk to the Transifex server;
|
||||||
# runs regularly in a container, the setup needs to be done when
|
# it also checks that it is run from the top-level of a Calamares
|
||||||
# creating the container.
|
# checkout. In order to use the system overall, you'll also need:
|
||||||
|
# - ~/.gitconfig (For the git commits this does)
|
||||||
|
# - ~/.transifexrc (Password token for Transifex)
|
||||||
|
# - ~/.ssh (For git commits)
|
||||||
#
|
#
|
||||||
#
|
|
||||||
# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings
|
|
||||||
# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings
|
|
||||||
# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github
|
|
||||||
#
|
|
||||||
# cd "$WORKSPACE"
|
|
||||||
# git config --global http.sslVerify false
|
|
||||||
|
|
||||||
test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||||
test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||||
test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||||
@ -97,16 +92,23 @@ done
|
|||||||
# those are done separately.
|
# those are done separately.
|
||||||
_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml"
|
_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml"
|
||||||
$LUPDATE -no-obsolete $_srcdirs -ts lang/calamares_en.ts
|
$LUPDATE -no-obsolete $_srcdirs -ts lang/calamares_en.ts
|
||||||
# Updating the TZ only needs to happen when the TZ themselves are updated,
|
# Non-Transifex special-cases
|
||||||
# very-very-rarely.
|
#
|
||||||
|
# - timezone names can be translated, but that's 700+ strings I don't want
|
||||||
|
# to inflict on translators normally
|
||||||
|
# - keyboard layouts can be translated, but that's 767 strings
|
||||||
|
#
|
||||||
|
# For both of these, the language / translation only needs to be updated
|
||||||
|
# when the source data is updated, which is very very rarely.
|
||||||
# $LUPDATE -no-obsolete -extensions cxxtr src/libcalamares/locale -ts lang/tz_en.ts
|
# $LUPDATE -no-obsolete -extensions cxxtr src/libcalamares/locale -ts lang/tz_en.ts
|
||||||
|
# $LUPDATE -no-obsolete -extensions cxxtr src/modules/keyboard -ts lang/kb_en.ts
|
||||||
|
|
||||||
if test -n "$XMLLINT" ; then
|
if test -n "$XMLLINT" ; then
|
||||||
TS_FILE="lang/calamares_en.ts"
|
TS_FILE="lang/calamares_en.ts"
|
||||||
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tx push --source --no-interactive -r calamares.calamares-master
|
tx push --source --no-interactive -r calamares.calamares
|
||||||
tx push --source --no-interactive -r calamares.fdo
|
tx push --source --no-interactive -r calamares.fdo
|
||||||
|
|
||||||
|
|
||||||
|
47
ci/txreduce.py
Executable file
47
ci/txreduce.py
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
#! /usr/bin/env python3
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
# Reduce a translation file -- generally, a Timezone translation -- by
|
||||||
|
# dropping untranslated strings. An untranslated string is one that
|
||||||
|
# has an empty translation **and** is marked unfinished.
|
||||||
|
#
|
||||||
|
# This is mostly useful to cut down the size of the source file:
|
||||||
|
# far and away most of the zones are not translated, and it's just a
|
||||||
|
# handful of places that get special treatment.
|
||||||
|
|
||||||
|
from xml.dom.minidom import parse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
valid = True
|
||||||
|
dom = parse(sys.argv[1])
|
||||||
|
for n in dom.getElementsByTagName("translation"):
|
||||||
|
attrs = n.attributes.keys()
|
||||||
|
|
||||||
|
drop = True
|
||||||
|
if "type" not in attrs:
|
||||||
|
drop = False
|
||||||
|
elif "type" in attrs and n.attributes["type"].value != "unfinished":
|
||||||
|
# In the samples I've seen, only "unfinished" is a valid type;
|
||||||
|
# once something has been translated, the attribute vanishes (see
|
||||||
|
# the if branch, above).
|
||||||
|
print("WARNING ''{!s}'' unknown type".format(n.attributes["type"].value))
|
||||||
|
drop = False
|
||||||
|
valid = False
|
||||||
|
else:
|
||||||
|
t = n.firstChild
|
||||||
|
if t is None:
|
||||||
|
# Unfinished and empty
|
||||||
|
drop = True
|
||||||
|
else:
|
||||||
|
drop = bool(t.data)
|
||||||
|
if drop:
|
||||||
|
message = n.parentNode
|
||||||
|
message.parentNode.removeChild(message)
|
||||||
|
message.unlink()
|
||||||
|
|
||||||
|
if valid:
|
||||||
|
for line in dom.toxml().split("\n"):
|
||||||
|
if line.strip():
|
||||||
|
print(line)
|
234
ci/txstats.py
234
ci/txstats.py
@ -1,5 +1,8 @@
|
|||||||
#! /usr/bin/env python3
|
#! /usr/bin/env python3
|
||||||
#
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
# Uses the Transifex API to get a list of enabled languages,
|
# Uses the Transifex API to get a list of enabled languages,
|
||||||
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
||||||
#
|
#
|
||||||
@ -8,25 +11,138 @@
|
|||||||
# Run it with a -v command-line option to get extra output on
|
# Run it with a -v command-line option to get extra output on
|
||||||
# actual translation percentages.
|
# actual translation percentages.
|
||||||
import sys
|
import sys
|
||||||
|
import os
|
||||||
|
import argparse
|
||||||
|
|
||||||
def get_tx_credentials():
|
class TXError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class TransifexGetter(object):
|
||||||
"""
|
"""
|
||||||
Gets the API token out of the user's .transifexrc (this is supposed
|
Get language data from Transifex.
|
||||||
to be secure).
|
|
||||||
|
The object does all the work in __init__, after that
|
||||||
|
the only relevant data is .languages, a dictionary
|
||||||
|
of language data.
|
||||||
"""
|
"""
|
||||||
import configparser
|
def __init__(self):
|
||||||
import os
|
token = self.get_tx_credentials()
|
||||||
txconfig_name = os.path.expanduser("~/.transifexrc")
|
if token is None:
|
||||||
try:
|
raise TXError("Could not get Transifex API token")
|
||||||
with open(txconfig_name, "r") as f:
|
|
||||||
parser = configparser.ConfigParser()
|
|
||||||
parser.read_file(f)
|
|
||||||
|
|
||||||
return parser.get("https://www.transifex.com", "password")
|
import requests
|
||||||
except IOError as e:
|
r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares/", auth=("api", token))
|
||||||
return None
|
if r.status_code != 200:
|
||||||
|
raise TXError("Could not get Transifex data from API")
|
||||||
|
|
||||||
def output_langs(all_langs, label, filterfunc):
|
j = r.json()
|
||||||
|
self.languages = j["stats"]
|
||||||
|
|
||||||
|
|
||||||
|
def get_tx_credentials(self):
|
||||||
|
"""
|
||||||
|
Gets the API token out of the user's .transifexrc (this is supposed
|
||||||
|
to be secure).
|
||||||
|
"""
|
||||||
|
import configparser
|
||||||
|
import os
|
||||||
|
txconfig_name = os.path.expanduser("~/.transifexrc")
|
||||||
|
try:
|
||||||
|
with open(txconfig_name, "r") as f:
|
||||||
|
parser = configparser.ConfigParser()
|
||||||
|
parser.read_file(f)
|
||||||
|
|
||||||
|
return parser.get("https://www.transifex.com", "password")
|
||||||
|
except IOError as e:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
class BogusGetter(object):
|
||||||
|
"""
|
||||||
|
Fake language data.
|
||||||
|
|
||||||
|
This object pretends to retrieve data, and returns fixed language lists and percentages,
|
||||||
|
for testing purposes without hitting Transifex servers all the time.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
self.languages = dict()
|
||||||
|
for lang, completion in ( ("sq", 100), ("ar", 44), ("as", 28), ("de", 15), ("da", 4), ("ts", 82) ):
|
||||||
|
self.languages[lang] = dict(translated=dict(stringcount=686, percentage=(completion/100.0)))
|
||||||
|
|
||||||
|
|
||||||
|
class PrintOutputter(object):
|
||||||
|
"""
|
||||||
|
Output via print-statements.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def print(self, s):
|
||||||
|
print(s)
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, e, v, tb):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EditingOutputter(object):
|
||||||
|
"""
|
||||||
|
Edit CMakeLists in-place.
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
with open("CMakeLists.txt", "r") as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
|
||||||
|
mark = None
|
||||||
|
for l in lines:
|
||||||
|
# Note that we didn't strip the lines, so need the \n here
|
||||||
|
if l.startswith("# Total ") and l.endswith(" languages\n"):
|
||||||
|
mark = lines.index(l)
|
||||||
|
break
|
||||||
|
if mark is None:
|
||||||
|
raise TXError("No CMakeLists.txt lines for TX stats found")
|
||||||
|
self.pre_lines = lines[:mark]
|
||||||
|
|
||||||
|
nextmark = mark + 1
|
||||||
|
for l in lines[mark+1:]:
|
||||||
|
if l.startswith("set( _tx_"):
|
||||||
|
nextmark += 1
|
||||||
|
continue
|
||||||
|
if l.startswith(" "):
|
||||||
|
nextmark += 1
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
if nextmark > mark + 12 or nextmark > len(lines) - 4:
|
||||||
|
# Try to catch runaway nextmarks: we know there should
|
||||||
|
# be four set-lines, which are unlikely to be 3 lines each;
|
||||||
|
# similarly the CMakeLists.txt is supposed to end with
|
||||||
|
# some boilerplate.
|
||||||
|
raise TXError("Could not find end of TX settings in CMakeLists.txt")
|
||||||
|
self.post_lines = lines[nextmark:]
|
||||||
|
|
||||||
|
self.mid_lines = []
|
||||||
|
print("# Editing CMakeLists.txt in-place")
|
||||||
|
|
||||||
|
def print(self, s):
|
||||||
|
# Add the implicit \n from print()
|
||||||
|
self.mid_lines.append(s + "\n")
|
||||||
|
if s.startswith("#"):
|
||||||
|
print(s)
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, e, v, tb):
|
||||||
|
if e is None:
|
||||||
|
with open("CMakeLists.txt", "w") as f:
|
||||||
|
f.write("".join(self.pre_lines + self.mid_lines + self.post_lines))
|
||||||
|
print("# CMakeLists.txt updated")
|
||||||
|
|
||||||
|
|
||||||
|
def output_langs(all_langs, outputter, label, filterfunc):
|
||||||
"""
|
"""
|
||||||
Output (via print) all of the languages in @p all_langs
|
Output (via print) all of the languages in @p all_langs
|
||||||
that satisfy the translation-percentage filter @p filterfunc.
|
that satisfy the translation-percentage filter @p filterfunc.
|
||||||
@ -42,12 +158,13 @@ def output_langs(all_langs, label, filterfunc):
|
|||||||
|
|
||||||
while len(out) > width - len(prefix):
|
while len(out) > width - len(prefix):
|
||||||
chunk = out[:out[:width].rfind(" ")]
|
chunk = out[:out[:width].rfind(" ")]
|
||||||
print("%s%s" % (prefix, chunk))
|
outputter.print("%s%s" % (prefix, chunk))
|
||||||
out = out[len(chunk)+1:]
|
out = out[len(chunk)+1:]
|
||||||
prefix = " "
|
prefix = " "
|
||||||
print("%s%s" % (prefix, out))
|
outputter.print("%s%s" % (prefix, out))
|
||||||
|
|
||||||
def get_tx_stats(token, verbose):
|
|
||||||
|
def get_tx_stats(languages, outputter, verbose):
|
||||||
"""
|
"""
|
||||||
Does an API request to Transifex with the given API @p token, getting
|
Does an API request to Transifex with the given API @p token, getting
|
||||||
the translation statistics for the main body of texts. Then prints
|
the translation statistics for the main body of texts. Then prints
|
||||||
@ -56,13 +173,6 @@ def get_tx_stats(token, verbose):
|
|||||||
|
|
||||||
If @p verbose is True, prints out language stats as well.
|
If @p verbose is True, prints out language stats as well.
|
||||||
"""
|
"""
|
||||||
import requests
|
|
||||||
|
|
||||||
r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares-master/", auth=("api", token))
|
|
||||||
if r.status_code != 200:
|
|
||||||
return 1
|
|
||||||
|
|
||||||
suppressed_languages = ( "es_ES", ) # In Transifex, but not used
|
|
||||||
# Some languages go into the "incomplete" list by definition,
|
# Some languages go into the "incomplete" list by definition,
|
||||||
# regardless of their completion status: this can have various reasons.
|
# regardless of their completion status: this can have various reasons.
|
||||||
#
|
#
|
||||||
@ -71,16 +181,12 @@ def get_tx_stats(token, verbose):
|
|||||||
# and it's at-the-least ok.
|
# and it's at-the-least ok.
|
||||||
incomplete_languages = (
|
incomplete_languages = (
|
||||||
"eo", # Not supported by QLocale < 5.12.1
|
"eo", # Not supported by QLocale < 5.12.1
|
||||||
|
"ie", # Not supported by Qt at least through 5.15.0
|
||||||
)
|
)
|
||||||
|
|
||||||
all_langs = []
|
all_langs = []
|
||||||
|
outputter.print("# Total %d languages" % len(languages))
|
||||||
j = r.json()
|
|
||||||
languages = j["stats"]
|
|
||||||
print("# Total %d languages" % len(languages))
|
|
||||||
for lang_name in languages:
|
for lang_name in languages:
|
||||||
if lang_name in suppressed_languages:
|
|
||||||
continue
|
|
||||||
stats = languages[lang_name]["translated"]["percentage"]
|
stats = languages[lang_name]["translated"]["percentage"]
|
||||||
# Make the by-definition-incomplete languages have a percentage
|
# Make the by-definition-incomplete languages have a percentage
|
||||||
# lower than zero; this way they end up sorted (in -v output)
|
# lower than zero; this way they end up sorted (in -v output)
|
||||||
@ -91,23 +197,67 @@ def get_tx_stats(token, verbose):
|
|||||||
|
|
||||||
if verbose:
|
if verbose:
|
||||||
for s, l in sorted(all_langs, reverse=True):
|
for s, l in sorted(all_langs, reverse=True):
|
||||||
print("# %16s\t%6.2f" % (l, s * 100.0))
|
outputter.print("# %16s\t%6.2f" % (l, s * 100.0))
|
||||||
output_langs(all_langs, "complete", lambda s : s == 1.0)
|
output_langs(all_langs, outputter, "complete", lambda s : s == 1.0)
|
||||||
output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75)
|
output_langs(all_langs, outputter, "good", lambda s : 1.0 > s >= 0.75)
|
||||||
output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05)
|
output_langs(all_langs, outputter, "ok", lambda s : 0.75 > s >= 0.05)
|
||||||
output_langs(all_langs, "incomplete", lambda s : 0.05 > s)
|
output_langs(all_langs, outputter, "incomplete", lambda s : 0.05 > s)
|
||||||
|
|
||||||
|
# Audit the languages that are in TX, mapped to git
|
||||||
|
for lang_name in languages:
|
||||||
|
if not os.path.exists("lang/calamares_{}.ts".format(lang_name)):
|
||||||
|
print("# !! Missing translation file for {}".format(lang_name))
|
||||||
|
if not os.path.isdir("lang/python/{}/LC_MESSAGES".format(lang_name)):
|
||||||
|
print("# !! Missing Python translation file for {}".format(lang_name))
|
||||||
|
|
||||||
|
# Audit the files that are in git, mapped to TX
|
||||||
|
special_cases = ("python.pot", "python", "CMakeLists.txt", "txload.cpp", "calamares_i18n.qrc.in")
|
||||||
|
for file_name in os.listdir("lang"):
|
||||||
|
if file_name in special_cases:
|
||||||
|
continue
|
||||||
|
elif file_name.startswith("calamares_") and file_name.endswith(".ts"):
|
||||||
|
key = file_name[10:-3]
|
||||||
|
if not key in languages and not key == "en":
|
||||||
|
print("# !! Translation file for {} not in TX".format(key))
|
||||||
|
elif file_name.startswith("tz_") and file_name.endswith(".ts"):
|
||||||
|
key = file_name[3:-3]
|
||||||
|
if not key in languages and not key == "en":
|
||||||
|
print("# !! Translation file for TZ {} not in TX".format(key))
|
||||||
|
elif file_name.startswith("kb_") and file_name.endswith(".ts"):
|
||||||
|
key = file_name[3:-3]
|
||||||
|
if not key in languages and not key == "en":
|
||||||
|
print("# !! Translation file for KB {} not in TX".format(key))
|
||||||
|
else:
|
||||||
|
print("# !! Weird translation file {} not in TX".format(file_name))
|
||||||
|
|
||||||
|
# Audit the python translation files that are in git, mapped to TX
|
||||||
|
for file_name in os.listdir("lang/python"):
|
||||||
|
if file_name not in languages:
|
||||||
|
print("# !! Translation file for Python {} not in TX".format(file_name))
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
verbose = (sys.argv[-1] == "-v")
|
parser = argparse.ArgumentParser(description="Update Transifex Statistics")
|
||||||
cred = get_tx_credentials()
|
parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true")
|
||||||
if cred:
|
parser.add_argument("--bogus", "-n", help="Use bogus data (do not query Transifex)", action="store_true")
|
||||||
return get_tx_stats(cred, verbose)
|
parser.add_argument("--edit", "-e", help="Edit CMakeLists.txt in-place", action="store_true")
|
||||||
else:
|
args = parser.parse_args()
|
||||||
print("! Could not find API token in ~/.transifexrc")
|
try:
|
||||||
return 1
|
if args.bogus:
|
||||||
|
getter = BogusGetter()
|
||||||
|
else:
|
||||||
|
getter = TransifexGetter()
|
||||||
|
if args.edit:
|
||||||
|
outputter = EditingOutputter()
|
||||||
|
else:
|
||||||
|
outputter = PrintOutputter()
|
||||||
|
with outputter:
|
||||||
|
return get_tx_stats(getter.languages, outputter, args.verbose)
|
||||||
|
except TXError as e:
|
||||||
|
print("! " + str(e))
|
||||||
|
return 1;
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
29
ci/umount.sh
Executable file
29
ci/umount.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
### LICENSE
|
||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2022 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
# This file is Free Software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the 2-clause BSD License.
|
||||||
|
#
|
||||||
|
### END LICENSE
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is an "unmount" script that tries to unmount whatever
|
||||||
|
# filesystems Calamares might have left mounted (e.g. because of
|
||||||
|
# a crash, or ^C'ing the installer, or ..).
|
||||||
|
#
|
||||||
|
|
||||||
|
# Swap may have become enabled on the disks just used; assume
|
||||||
|
# we're in a live session where we don't want any.
|
||||||
|
sudo swapoff -a
|
||||||
|
# In Arch-based systems, there may be a gpg-agent started by
|
||||||
|
# pacman during installation, which lives in the chroot. Kill
|
||||||
|
# them all; again assume we're in a live session where it doesn't matter.
|
||||||
|
sudo pkill gpg-agent
|
||||||
|
# Unmount the filesystems in *reverse* order, since we need to ditch
|
||||||
|
# e.g. /run/udev before /run before the root filesystem.
|
||||||
|
sudo umount $( LC_ALL=C mount | awk '/calamares-root/{print $3}' | LC_ALL=C sort -r )
|
@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||||
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
|
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
|
||||||
ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- SPDX-FileCopyrightText: no
|
||||||
|
SPDX-License-Identifier: CC0-1.0
|
||||||
|
-->
|
||||||
<!DOCTYPE policyconfig PUBLIC
|
<!DOCTYPE policyconfig PUBLIC
|
||||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||||
@ -19,4 +22,4 @@
|
|||||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/calamares</annotate>
|
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/calamares</annotate>
|
||||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||||
</action>
|
</action>
|
||||||
</policyconfig>
|
</policyconfig>
|
||||||
|
27
data/completion/bash/calamares
Normal file
27
data/completion/bash/calamares
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2020 Gaël PORTAY <gael.portay@gmail.com>
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
|
#
|
||||||
|
|
||||||
|
_calamares()
|
||||||
|
{
|
||||||
|
local cur prev words cword
|
||||||
|
_init_completion || return
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
-D)
|
||||||
|
COMPREPLY=( $( compgen -W "$( seq 0 1 8 )" -- "$cur" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
-c|--config)
|
||||||
|
_filedir
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
COMPREPLY=( $( compgen -W "-h --help -v --version -d --debug -D -c --config -X -xdg-config -T --debug-translation" -- "$cur" ) )
|
||||||
|
} &&
|
||||||
|
complete -F _calamares calamares
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user