Compare commits
14 Commits
v3.2.26.1
...
1.1.x-stab
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4c3d634df0 | ||
![]() |
7c1d193234 | ||
![]() |
5456ed3b53 | ||
![]() |
198d5d5c4a | ||
![]() |
9f4b8c16b6 | ||
![]() |
27b5fa4d5b | ||
![]() |
2f2a55a359 | ||
![]() |
07b6b1265b | ||
![]() |
973f6935e4 | ||
![]() |
825f657bc6 | ||
![]() |
70ddfa25dd | ||
![]() |
eabe0c68d6 | ||
![]() |
2ac1b29401 | ||
![]() |
34e686decb |
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
BasedOnStyle: WebKit
|
|
||||||
|
|
||||||
AlignAfterOpenBracket: Align
|
|
||||||
AlignEscapedNewlines: DontAlign
|
|
||||||
AllowAllParametersOfDeclarationOnNextLine: "false"
|
|
||||||
AllowShortFunctionsOnASingleLine: Inline
|
|
||||||
AllowShortIfStatementsOnASingleLine: "false"
|
|
||||||
AllowShortLoopsOnASingleLine: "false"
|
|
||||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
|
||||||
AlwaysBreakTemplateDeclarations: Yes
|
|
||||||
BinPackArguments: "false"
|
|
||||||
BinPackParameters: "false"
|
|
||||||
BreakBeforeBraces: Allman
|
|
||||||
BreakBeforeTernaryOperators: "true"
|
|
||||||
BreakConstructorInitializers: BeforeComma
|
|
||||||
ColumnLimit: 120
|
|
||||||
Cpp11BracedListStyle: "false"
|
|
||||||
FixNamespaceComments: "true"
|
|
||||||
IncludeBlocks: Preserve
|
|
||||||
IndentWidth: "4"
|
|
||||||
MaxEmptyLinesToKeep: "2"
|
|
||||||
NamespaceIndentation: None
|
|
||||||
PointerAlignment: Left
|
|
||||||
ReflowComments: "false"
|
|
||||||
SortIncludes: "true"
|
|
||||||
SpaceAfterCStyleCast: "false"
|
|
||||||
SpacesBeforeTrailingComments: "2"
|
|
||||||
# SpaceInEmptyBlock: "true"
|
|
||||||
SpacesInAngles: "true"
|
|
||||||
SpacesInParentheses: "true"
|
|
||||||
SpacesInSquareBrackets: "true"
|
|
||||||
Standard: Cpp11
|
|
@@ -7,22 +7,7 @@ charset = utf-8
|
|||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
[CMakeLists.txt]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.cmake]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.{py,cpp,h}]
|
[*.{py,cpp,h}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
[*.sh]
|
|
||||||
indent_style = tab
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
|
15
.gitattributes
vendored
15
.gitattributes
vendored
@@ -1,11 +1,6 @@
|
|||||||
.editorconfig export-ignore
|
.tx/* export-ignore
|
||||||
.gitattributes export-ignore
|
hacking/* export-ignore
|
||||||
.github export-ignore
|
HACKING.md export-ignore
|
||||||
.gitignore export-ignore
|
.editorconfig export-ignore
|
||||||
.gitmodules export-ignore
|
src/modules/testmodule.py export-ignore
|
||||||
.travis.yml export-ignore
|
|
||||||
.tx export-ignore
|
|
||||||
|
|
||||||
src/modules/testmodule.py export-ignore
|
|
||||||
src/modules/globalStorage.yaml export-ignore
|
src/modules/globalStorage.yaml export-ignore
|
||||||
|
|
||||||
|
26
.github/ISSUE_TEMPLATE/bug_report.md
vendored
26
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
> Hi! Thank you for helping improve Calamares. If you are seeing a problem in installing a specific distribution, you should **probably** report the problem in the distribution's bug tracker, first. That helps filter out issues with packaging, mis-configuration, etc. that Calamares has no control over. If you are a distribution packager or maintainer, this page is for you.
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of what the bug is. Please include 32/64 bit machine details, EFI/BIOS details, and disk setup.
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '....'
|
|
||||||
3. Scroll down to '....'
|
|
||||||
4. See error
|
|
||||||
|
|
||||||
**Expected behavior**
|
|
||||||
A clear and concise description of what you expected to happen.
|
|
||||||
|
|
||||||
**Screenshots and Logs**
|
|
||||||
If applicable, add screenshots to help explain your problem. Calamares has an installation log (usually `~/.cache/calamares/session.log`), please check it for confidential information and attach it if possible.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
11
.gitignore
vendored
11
.gitignore
vendored
@@ -21,7 +21,6 @@ __pycache__
|
|||||||
*.pro.user
|
*.pro.user
|
||||||
*.pro.user.*
|
*.pro.user.*
|
||||||
*.moc
|
*.moc
|
||||||
*.qmlc
|
|
||||||
moc_*.cpp
|
moc_*.cpp
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
ui_*.h
|
ui_*.h
|
||||||
@@ -36,18 +35,8 @@ Makefile*
|
|||||||
qtcreator-build
|
qtcreator-build
|
||||||
CMakeLists.txt.user
|
CMakeLists.txt.user
|
||||||
|
|
||||||
# KDevelop
|
|
||||||
*.kdev4
|
|
||||||
|
|
||||||
# PyCharm
|
# PyCharm
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
# Visual Studio Code
|
|
||||||
.vscode
|
|
||||||
|
|
||||||
# Backup files
|
# Backup files
|
||||||
*~
|
*~
|
||||||
|
|
||||||
# Kate
|
|
||||||
*.kate-swp
|
|
||||||
tags
|
|
||||||
|
4
.gitmodules
vendored
4
.gitmodules
vendored
@@ -0,0 +1,4 @@
|
|||||||
|
[submodule "src/libcalamares/partitionmanager"]
|
||||||
|
path = src/modules/partition/partitionmanager
|
||||||
|
url = https://github.com/calamares/partitionmanager.git
|
||||||
|
branch = calamares
|
||||||
|
20
.travis.yml
20
.travis.yml
@@ -1,20 +0,0 @@
|
|||||||
language: cpp
|
|
||||||
|
|
||||||
python:
|
|
||||||
- 3.5
|
|
||||||
|
|
||||||
sudo: required
|
|
||||||
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
irc:
|
|
||||||
- "chat.freenode.net#calamares"
|
|
||||||
|
|
||||||
install:
|
|
||||||
- docker build -t calamares .
|
|
||||||
|
|
||||||
script:
|
|
||||||
- docker run -v $PWD:/src --tmpfs /build:rw,size=81920k -e SRCDIR=/src -e BUILDDIR=/build calamares "/src/ci/travis.sh"
|
|
||||||
|
|
14
.tx/config
14
.tx/config
@@ -1,21 +1,9 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[calamares.calamares]
|
[calamares.calamares-master]
|
||||||
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.fdo]
|
|
||||||
file_filter = lang/desktop_<lang>.desktop
|
|
||||||
source_file = calamares.desktop
|
|
||||||
source_lang = en
|
|
||||||
type = DESKTOP
|
|
||||||
|
|
||||||
[calamares.python]
|
|
||||||
file_filter = lang/python/<lang>/LC_MESSAGES/python.po
|
|
||||||
source_file = lang/python.pot
|
|
||||||
source_lang = en
|
|
||||||
type = PO
|
|
||||||
|
|
||||||
|
282
3rdparty/waitingspinnerwidget.cpp
vendored
282
3rdparty/waitingspinnerwidget.cpp
vendored
@@ -1,282 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
|
||||||
Modified 2014 by William Hallatt
|
|
||||||
Modified 2015 by Jacob Dawid
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Own includes
|
|
||||||
#include "waitingspinnerwidget.h"
|
|
||||||
|
|
||||||
// Standard includes
|
|
||||||
#include <cmath>
|
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
// Qt includes
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QTimer>
|
|
||||||
|
|
||||||
WaitingSpinnerWidget::WaitingSpinnerWidget(QWidget *parent,
|
|
||||||
bool centerOnParent,
|
|
||||||
bool disableParentWhenSpinning)
|
|
||||||
: QWidget(parent),
|
|
||||||
_centerOnParent(centerOnParent),
|
|
||||||
_disableParentWhenSpinning(disableParentWhenSpinning) {
|
|
||||||
initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
WaitingSpinnerWidget::WaitingSpinnerWidget(Qt::WindowModality modality,
|
|
||||||
QWidget *parent,
|
|
||||||
bool centerOnParent,
|
|
||||||
bool disableParentWhenSpinning)
|
|
||||||
: QWidget(parent, Qt::Dialog | Qt::FramelessWindowHint),
|
|
||||||
_centerOnParent(centerOnParent),
|
|
||||||
_disableParentWhenSpinning(disableParentWhenSpinning){
|
|
||||||
initialize();
|
|
||||||
|
|
||||||
// We need to set the window modality AFTER we've hidden the
|
|
||||||
// widget for the first time since changing this property while
|
|
||||||
// the widget is visible has no effect.
|
|
||||||
setWindowModality(modality);
|
|
||||||
setAttribute(Qt::WA_TranslucentBackground);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::initialize() {
|
|
||||||
_color = Qt::black;
|
|
||||||
_roundness = 100.0;
|
|
||||||
_minimumTrailOpacity = 3.14159265358979323846;
|
|
||||||
_trailFadePercentage = 80.0;
|
|
||||||
_revolutionsPerSecond = 1.57079632679489661923;
|
|
||||||
_numberOfLines = 20;
|
|
||||||
_lineLength = 10;
|
|
||||||
_lineWidth = 2;
|
|
||||||
_innerRadius = 10;
|
|
||||||
_currentCounter = 0;
|
|
||||||
_isSpinning = false;
|
|
||||||
|
|
||||||
_timer = new QTimer(this);
|
|
||||||
connect(_timer, SIGNAL(timeout()), this, SLOT(rotate()));
|
|
||||||
updateSize();
|
|
||||||
updateTimer();
|
|
||||||
hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::paintEvent(QPaintEvent *) {
|
|
||||||
updatePosition();
|
|
||||||
QPainter painter(this);
|
|
||||||
painter.fillRect(this->rect(), Qt::transparent);
|
|
||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
|
||||||
|
|
||||||
if (_currentCounter >= _numberOfLines) {
|
|
||||||
_currentCounter = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
painter.setPen(Qt::NoPen);
|
|
||||||
for (int i = 0; i < _numberOfLines; ++i) {
|
|
||||||
painter.save();
|
|
||||||
painter.translate(_innerRadius + _lineLength,
|
|
||||||
_innerRadius + _lineLength);
|
|
||||||
qreal rotateAngle =
|
|
||||||
static_cast<qreal>(360 * i) / static_cast<qreal>(_numberOfLines);
|
|
||||||
painter.rotate(rotateAngle);
|
|
||||||
painter.translate(_innerRadius, 0);
|
|
||||||
int distance =
|
|
||||||
lineCountDistanceFromPrimary(i, _currentCounter, _numberOfLines);
|
|
||||||
QColor color =
|
|
||||||
currentLineColor(distance, _numberOfLines, _trailFadePercentage,
|
|
||||||
_minimumTrailOpacity, _color);
|
|
||||||
painter.setBrush(color);
|
|
||||||
// TODO improve the way rounded rect is painted
|
|
||||||
painter.drawRoundedRect(
|
|
||||||
QRect(0, -_lineWidth / 2, _lineLength, _lineWidth), _roundness,
|
|
||||||
_roundness, Qt::RelativeSize);
|
|
||||||
painter.restore();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::start() {
|
|
||||||
updatePosition();
|
|
||||||
_isSpinning = true;
|
|
||||||
show();
|
|
||||||
|
|
||||||
if(parentWidget() && _disableParentWhenSpinning) {
|
|
||||||
parentWidget()->setEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!_timer->isActive()) {
|
|
||||||
_timer->start();
|
|
||||||
_currentCounter = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::stop() {
|
|
||||||
_isSpinning = false;
|
|
||||||
hide();
|
|
||||||
|
|
||||||
if(parentWidget() && _disableParentWhenSpinning) {
|
|
||||||
parentWidget()->setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_timer->isActive()) {
|
|
||||||
_timer->stop();
|
|
||||||
_currentCounter = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setNumberOfLines(int lines) {
|
|
||||||
_numberOfLines = lines;
|
|
||||||
_currentCounter = 0;
|
|
||||||
updateTimer();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setLineLength(int length) {
|
|
||||||
_lineLength = length;
|
|
||||||
updateSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setLineWidth(int width) {
|
|
||||||
_lineWidth = width;
|
|
||||||
updateSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setInnerRadius(int radius) {
|
|
||||||
_innerRadius = radius;
|
|
||||||
updateSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
QColor WaitingSpinnerWidget::color() {
|
|
||||||
return _color;
|
|
||||||
}
|
|
||||||
|
|
||||||
qreal WaitingSpinnerWidget::roundness() {
|
|
||||||
return _roundness;
|
|
||||||
}
|
|
||||||
|
|
||||||
qreal WaitingSpinnerWidget::minimumTrailOpacity() {
|
|
||||||
return _minimumTrailOpacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
qreal WaitingSpinnerWidget::trailFadePercentage() {
|
|
||||||
return _trailFadePercentage;
|
|
||||||
}
|
|
||||||
|
|
||||||
qreal WaitingSpinnerWidget::revolutionsPersSecond() {
|
|
||||||
return _revolutionsPerSecond;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WaitingSpinnerWidget::numberOfLines() {
|
|
||||||
return _numberOfLines;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WaitingSpinnerWidget::lineLength() {
|
|
||||||
return _lineLength;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WaitingSpinnerWidget::lineWidth() {
|
|
||||||
return _lineWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
int WaitingSpinnerWidget::innerRadius() {
|
|
||||||
return _innerRadius;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool WaitingSpinnerWidget::isSpinning() const {
|
|
||||||
return _isSpinning;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setRoundness(qreal roundness) {
|
|
||||||
_roundness = std::max(0.0, std::min(100.0, roundness));
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setColor(QColor color) {
|
|
||||||
_color = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setRevolutionsPerSecond(qreal revolutionsPerSecond) {
|
|
||||||
_revolutionsPerSecond = revolutionsPerSecond;
|
|
||||||
updateTimer();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setTrailFadePercentage(qreal trail) {
|
|
||||||
_trailFadePercentage = trail;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::setMinimumTrailOpacity(qreal minimumTrailOpacity) {
|
|
||||||
_minimumTrailOpacity = minimumTrailOpacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::rotate() {
|
|
||||||
++_currentCounter;
|
|
||||||
if (_currentCounter >= _numberOfLines) {
|
|
||||||
_currentCounter = 0;
|
|
||||||
}
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::updateSize() {
|
|
||||||
int size = (_innerRadius + _lineLength) * 2;
|
|
||||||
setFixedSize(size, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::updateTimer() {
|
|
||||||
_timer->setInterval(1000 / (_numberOfLines * _revolutionsPerSecond));
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitingSpinnerWidget::updatePosition() {
|
|
||||||
if (parentWidget() && _centerOnParent) {
|
|
||||||
move(parentWidget()->width() / 2 - width() / 2,
|
|
||||||
parentWidget()->height() / 2 - height() / 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int WaitingSpinnerWidget::lineCountDistanceFromPrimary(int current, int primary,
|
|
||||||
int totalNrOfLines) {
|
|
||||||
int distance = primary - current;
|
|
||||||
if (distance < 0) {
|
|
||||||
distance += totalNrOfLines;
|
|
||||||
}
|
|
||||||
return distance;
|
|
||||||
}
|
|
||||||
|
|
||||||
QColor WaitingSpinnerWidget::currentLineColor(int countDistance, int totalNrOfLines,
|
|
||||||
qreal trailFadePerc, qreal minOpacity,
|
|
||||||
QColor color) {
|
|
||||||
if (countDistance == 0) {
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
const qreal minAlphaF = minOpacity / 100.0;
|
|
||||||
int distanceThreshold =
|
|
||||||
static_cast<int>(ceil((totalNrOfLines - 1) * trailFadePerc / 100.0));
|
|
||||||
if (countDistance > distanceThreshold) {
|
|
||||||
color.setAlphaF(minAlphaF);
|
|
||||||
} else {
|
|
||||||
qreal alphaDiff = color.alphaF() - minAlphaF;
|
|
||||||
qreal gradient = alphaDiff / static_cast<qreal>(distanceThreshold + 1);
|
|
||||||
qreal resultAlpha = color.alphaF() - gradient * countDistance;
|
|
||||||
|
|
||||||
// If alpha is out of bounds, clip it.
|
|
||||||
resultAlpha = std::min(1.0, std::max(0.0, resultAlpha));
|
|
||||||
color.setAlphaF(resultAlpha);
|
|
||||||
}
|
|
||||||
return color;
|
|
||||||
}
|
|
119
3rdparty/waitingspinnerwidget.h
vendored
119
3rdparty/waitingspinnerwidget.h
vendored
@@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
|
||||||
Modified 2014 by William Hallatt
|
|
||||||
Modified 2015 by Jacob Dawid
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
// Qt includes
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QTimer>
|
|
||||||
#include <QColor>
|
|
||||||
|
|
||||||
class WaitingSpinnerWidget : public QWidget {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
/*! Constructor for "standard" widget behaviour - use this
|
|
||||||
* constructor if you wish to, e.g. embed your widget in another. */
|
|
||||||
WaitingSpinnerWidget(QWidget *parent = nullptr,
|
|
||||||
bool centerOnParent = true,
|
|
||||||
bool disableParentWhenSpinning = true);
|
|
||||||
|
|
||||||
/*! Constructor - use this constructor to automatically create a modal
|
|
||||||
* ("blocking") spinner on top of the calling widget/window. If a valid
|
|
||||||
* parent widget is provided, "centreOnParent" will ensure that
|
|
||||||
* QtWaitingSpinner automatically centres itself on it, if not,
|
|
||||||
* "centreOnParent" is ignored. */
|
|
||||||
WaitingSpinnerWidget(Qt::WindowModality modality,
|
|
||||||
QWidget *parent = nullptr,
|
|
||||||
bool centerOnParent = true,
|
|
||||||
bool disableParentWhenSpinning = true);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void start();
|
|
||||||
void stop();
|
|
||||||
|
|
||||||
public:
|
|
||||||
void setColor(QColor color);
|
|
||||||
void setRoundness(qreal roundness);
|
|
||||||
void setMinimumTrailOpacity(qreal minimumTrailOpacity);
|
|
||||||
void setTrailFadePercentage(qreal trail);
|
|
||||||
void setRevolutionsPerSecond(qreal revolutionsPerSecond);
|
|
||||||
void setNumberOfLines(int lines);
|
|
||||||
void setLineLength(int length);
|
|
||||||
void setLineWidth(int width);
|
|
||||||
void setInnerRadius(int radius);
|
|
||||||
void setText(QString text);
|
|
||||||
|
|
||||||
QColor color();
|
|
||||||
qreal roundness();
|
|
||||||
qreal minimumTrailOpacity();
|
|
||||||
qreal trailFadePercentage();
|
|
||||||
qreal revolutionsPersSecond();
|
|
||||||
int numberOfLines();
|
|
||||||
int lineLength();
|
|
||||||
int lineWidth();
|
|
||||||
int innerRadius();
|
|
||||||
|
|
||||||
bool isSpinning() const;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void rotate();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void paintEvent(QPaintEvent *paintEvent);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static int lineCountDistanceFromPrimary(int current, int primary,
|
|
||||||
int totalNrOfLines);
|
|
||||||
static QColor currentLineColor(int distance, int totalNrOfLines,
|
|
||||||
qreal trailFadePerc, qreal minOpacity,
|
|
||||||
QColor color);
|
|
||||||
|
|
||||||
void initialize();
|
|
||||||
void updateSize();
|
|
||||||
void updateTimer();
|
|
||||||
void updatePosition();
|
|
||||||
|
|
||||||
private:
|
|
||||||
QColor _color;
|
|
||||||
qreal _roundness; // 0..100
|
|
||||||
qreal _minimumTrailOpacity;
|
|
||||||
qreal _trailFadePercentage;
|
|
||||||
qreal _revolutionsPerSecond;
|
|
||||||
int _numberOfLines;
|
|
||||||
int _lineLength;
|
|
||||||
int _lineWidth;
|
|
||||||
int _innerRadius;
|
|
||||||
|
|
||||||
private:
|
|
||||||
WaitingSpinnerWidget(const WaitingSpinnerWidget&);
|
|
||||||
WaitingSpinnerWidget& operator=(const WaitingSpinnerWidget&);
|
|
||||||
|
|
||||||
QTimer *_timer;
|
|
||||||
bool _centerOnParent;
|
|
||||||
bool _disableParentWhenSpinning;
|
|
||||||
int _currentCounter;
|
|
||||||
bool _isSpinning;
|
|
||||||
};
|
|
45
AUTHORS
45
AUTHORS
@@ -1,44 +1 @@
|
|||||||
# MAINTAINER
|
Teo Mrnjavac <teo@kde.org>
|
||||||
|
|
||||||
Calamares development is sponsored by Blue Systems GmbH - Liberating Software.
|
|
||||||
|
|
||||||
Calamares maintainers through the years:
|
|
||||||
* Teo Mrnjavac <teo@kde.org> (maintainer -2017)
|
|
||||||
* Adriaan de Groot <groot@kde.org> (maintainer 2017-)
|
|
||||||
|
|
||||||
# CONTRIBUTORS
|
|
||||||
|
|
||||||
Calamares has received contributions of code, documentation, artwork
|
|
||||||
and moral support from (alphabetically by first name or nickname):
|
|
||||||
|
|
||||||
- Alf Gaida
|
|
||||||
- aliveafter1000
|
|
||||||
- Allen Welkie
|
|
||||||
- AlmAck
|
|
||||||
- Andrius Štikonas
|
|
||||||
- Arnaud Ferraris
|
|
||||||
- artoo@cromnix.org
|
|
||||||
- Bernhard Landauer
|
|
||||||
- Bezzy1999
|
|
||||||
- Bill Auger
|
|
||||||
- Caio Jordão Carvalho
|
|
||||||
- Collabora LTD
|
|
||||||
- crispg72
|
|
||||||
- Dan Simmons
|
|
||||||
- demmm
|
|
||||||
- Dominic Hayes
|
|
||||||
- Frede H
|
|
||||||
- Gabriel Craciunescu
|
|
||||||
- Harald Sitter
|
|
||||||
- Kai Dohmen
|
|
||||||
- Kevin Kofler
|
|
||||||
- Kyle Robertze
|
|
||||||
- Lisa Vitolo
|
|
||||||
- n3rdopolis
|
|
||||||
- Philip Müller
|
|
||||||
- Ramon Buldó
|
|
||||||
- Raul Rodrigo Segura
|
|
||||||
- Rohan Garg
|
|
||||||
- Scott Harvey
|
|
||||||
- Simon Quigley
|
|
||||||
- Walter Lapchynski
|
|
||||||
|
950
CHANGES
950
CHANGES
@@ -1,950 +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.27 (unreleased) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- No external contributors yet
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- No core changes yet
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- No module changes yet
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.26.1 (2020-06-23) #
|
|
||||||
|
|
||||||
This is a hotfix release for undefined behavior caused by an
|
|
||||||
uninitialized integer variable. It includes new translations
|
|
||||||
and features as well since those arrived independently.
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Anke Boersma
|
|
||||||
- Gaël PORTAY
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- Welcome to Azerbaijani translations. These are available
|
|
||||||
in two variations, *Azerbaijani* and *Azerbaijani (Azerbaijan)*.
|
|
||||||
[Wikipedia Azerbaijani](https://en.wikipedia.org/wiki/Azerbaijani_language#North_vs._South_Azerbaijani)
|
|
||||||
has a nice overview.
|
|
||||||
- Warnings while building with Qt 5.15 have been much reduced.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- *partitioning* has one case of undefined behavior (UB) due
|
|
||||||
to a missing integer-initialization. (Thanks Gaël)
|
|
||||||
- *keyboardq* QML module now works correctly. (Thanks Anke)
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.26 (2020-06-18) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Anke Boersma
|
|
||||||
- Gaël PORTAY
|
|
||||||
- Pablo Ovelleiro Corral
|
|
||||||
- Philip Müller
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- The default branch for Calamares source repositories (calamares
|
|
||||||
and calamares-extensions) is now *calamares*.
|
|
||||||
- External modules can now be built again, outside of the Calamares
|
|
||||||
source and build-tree.
|
|
||||||
- The repository *calamares-tools* has been removed. The idea behind
|
|
||||||
the tooling was to provide schema validation for Calamares configuration
|
|
||||||
files. This has been merged into the primary repository, where it
|
|
||||||
is now part of the test suite.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- *locale* put some more places into the correct timezone **visually**;
|
|
||||||
for instance Norfolk Island gave up UTC+11.5 in 2015 and is now
|
|
||||||
UTC+11, but Calamares still showed it in a zone separate from UTC+11.
|
|
||||||
- *localeq* can now properly switch between on & offline mode,
|
|
||||||
it detects internet status through js.
|
|
||||||
- *packages* gained support for the Void Linux package manager,
|
|
||||||
*xbps*. (thanks Pablo)
|
|
||||||
- *tracking* now supports kuserfeedback configuration.
|
|
||||||
- *welcomeq* added the GEOIP configuration option, so locale can be
|
|
||||||
initially set according to IP address.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.25 (2020-06-06) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Anke Boersma
|
|
||||||
- Callum Farmer
|
|
||||||
- FLVAL
|
|
||||||
- Gaël PORTAY
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- The slideshow in `branding.desc` can be configured with QML (recommended,
|
|
||||||
as it has been for the past umpteen releases) or with a list of
|
|
||||||
images (new).
|
|
||||||
- It is possible to turn off all the new QML code -- navigation, slideshow,
|
|
||||||
QML-based modules -- with a single `-DWITH_QML=OFF` at CMake time.
|
|
||||||
This removes QML from Calamares' dependency footprint (but only saves
|
|
||||||
200kB in Calamares itself).
|
|
||||||
- Tests have been extended and now support a tests/CMakeTests.txt file
|
|
||||||
for fine-tuning tests for Python modules.
|
|
||||||
- SPDX identifiers are used much more widely and consistently in Calamares.
|
|
||||||
(thanks Callum)
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The QML based *welcomeq* module is now a viable alternative to the
|
|
||||||
*welcome*(widgets based) module. Using QML files means it no longer
|
|
||||||
is needed to have pop-up windows for additional information or warnings,
|
|
||||||
all loads in the Calamares window itself. Additional features include the
|
|
||||||
option to customize the *About* info and load files like Release Notes
|
|
||||||
direct into Calamares, QML files added to the branding directory can be used.
|
|
||||||
- The *welcome* and *locale* modules that do GeoIP lookup can now also
|
|
||||||
use "fixed" style; this just negates the GeoIP lookup and substitutes a
|
|
||||||
constant (fixed) value; useful for testing specific locales.
|
|
||||||
- The *keyboard* module no longer uses *ca_eng* keyboards in Canada by
|
|
||||||
default, but sticks to the *us* keyboard. #1419
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.24 (2020-05-11) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- Bill Auger
|
|
||||||
- Gaël PORTAY
|
|
||||||
- Luna Jernberg
|
|
||||||
- Philip Müller
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- There is now a bash-completions script for Calamares; turn on
|
|
||||||
the (CMake-time) option INSTALL_COMPLETION to get it. (Thanks Gaël)
|
|
||||||
- The *productWallpaper* setting is documented and works. (Thanks Bill)
|
|
||||||
- GlobalStorage is available to QML modules as `Global`.
|
|
||||||
- The height of the navigation bar in QML can be set within the
|
|
||||||
QML code for the navigation; if not set, try something sensible.
|
|
||||||
- A regression in the requirements-checker which could block the
|
|
||||||
installer from proceeding without telling the user **why** it
|
|
||||||
was blocked, has been resolved.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- The *bootloader* module can force a UEFI-based machine to boot into
|
|
||||||
the newly-installed system. #1394 (Thanks Gaël)
|
|
||||||
- *partition* Pop-ups about boot flags use the right flag names. #1192
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.23 (2020-04-17) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- FLVAL
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- Some strange annotations were added to the *About* dialog text in
|
|
||||||
all the translations, like `{1?}`. These have been removed again.
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- *locale* module had some errors in timezone data, where clicking
|
|
||||||
on a city would select a different timezone. Some of these are
|
|
||||||
now fixed (thanks FLVAL). #1374
|
|
||||||
- *netinstall* supports a wider variety of package naming schemes,
|
|
||||||
and is more flexible in loading a `netinstall.yaml` that is copied from
|
|
||||||
the example configuration file, *groups* key and all. #1369
|
|
||||||
- *users* module logs a full error message from libpwquality if something
|
|
||||||
is wrong internally.
|
|
||||||
|
|
||||||
|
|
||||||
# 3.2.22 (2020-04-08) #
|
|
||||||
|
|
||||||
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.
|
|
||||||
- *partition* now correctly marks a partition as bootable in BIOS + MBR
|
|
||||||
installs. #1175
|
|
||||||
|
|
||||||
|
|
||||||
# 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`.
|
|
740
CMakeLists.txt
740
CMakeLists.txt
@@ -1,276 +1,35 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
project( calamares CXX )
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Generally, this CMakeLists.txt will find all the dependencies for Calamares
|
|
||||||
# and complain appropriately. See below (later in this file) for CMake-level
|
|
||||||
# options. There are some "secret" options as well:
|
|
||||||
#
|
|
||||||
# SKIP_MODULES : a space or semicolon-separated list of directory names
|
|
||||||
# under src/modules that should not be built.
|
|
||||||
# USE_<foo> : fills in SKIP_MODULES for modules called <foo>-<something>
|
|
||||||
# WITH_<foo> : try to enable <foo> (these usually default to ON). For
|
|
||||||
# a list of WITH_<foo> grep CMakeCache.txt after running
|
|
||||||
# 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
|
|
||||||
# - TESTING (standard CMake option)
|
|
||||||
# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py)
|
|
||||||
# DEBUG_<foo> : special developer flags for debugging
|
|
||||||
#
|
|
||||||
# Example usage:
|
|
||||||
#
|
|
||||||
# cmake . -DSKIP_MODULES="partition luksbootkeycfg"
|
|
||||||
#
|
|
||||||
# One special target is "show-version", which can be built
|
|
||||||
# to obtain the version number from here.
|
|
||||||
|
|
||||||
# TODO:3.3: Require CMake 3.12
|
# The partition manager uses ECM but ECMConfig.cmake
|
||||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
# will complain if we require CMake less than 2.8.13,
|
||||||
project( CALAMARES
|
# so never change this.
|
||||||
VERSION 3.2.26.1
|
cmake_minimum_required( VERSION 2.8.12 )
|
||||||
LANGUAGES C CXX )
|
|
||||||
|
|
||||||
set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development
|
set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
|
||||||
|
|
||||||
### OPTIONS
|
|
||||||
#
|
|
||||||
option( INSTALL_CONFIG "Install configuration files" OFF )
|
|
||||||
option( INSTALL_POLKIT "Install Polkit configuration" 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_PYTHONQT "Enable Python view modules API (deprecated, requires PythonQt)." OFF ) # TODO:3.3: remove
|
|
||||||
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_LAME (see partition/CMakeLists.txt)
|
|
||||||
|
|
||||||
|
|
||||||
### USE_*
|
|
||||||
#
|
|
||||||
# By convention, when there are multiple modules that implement similar
|
|
||||||
# functionality, and it only makes sense to have **at most one** of them
|
|
||||||
# enabled at any time, those modules are named <foo>-<implementation>.
|
|
||||||
# For example, services-systemd and services-openrc.
|
|
||||||
#
|
|
||||||
# Setting up SKIP_MODULES to ignore "the ones you don't want" can be
|
|
||||||
# annoying and error-prone (e.g. if a new module shows up). The USE_*
|
|
||||||
# modules provide a way to do automatic selection. To pick exactly
|
|
||||||
# one of the implementations from group <foo>, set USE_<foo> to the
|
|
||||||
# name of the implementation. If USE_<foo> is unset, or empty, then
|
|
||||||
# all the implementations are enabled (this just means they are
|
|
||||||
# **available** to `settings.conf`, not that they are used).
|
|
||||||
#
|
|
||||||
# To explicitly disable a set of modules, set USE_<foo>=none
|
|
||||||
# (e.g. the literal string none), which won't match any of the
|
|
||||||
# modules but is handled specially. This is the default for
|
|
||||||
# USE_os, which are modules for specialty non-Linux distributions.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
# - *os* picks an OS-specific module for things-that-are-not-Linux.
|
|
||||||
# It is generally discouraged to use this unless your distro is
|
|
||||||
# completely unable to use standard Linux tools for configuration.
|
|
||||||
# This defaults to *none* so that nothing gets picked up and nothing
|
|
||||||
# is packaged -- you must explicitly set it to empty to get all of
|
|
||||||
# the modules, but that hardly makes sense. Note, too that there
|
|
||||||
# are currently no os-* modules shipped with Calamares.
|
|
||||||
set( USE_services "" CACHE STRING "Select the services module to use" )
|
|
||||||
set( USE_os "none" CACHE STRING "Select the OS-specific module to include" )
|
|
||||||
|
|
||||||
### Calamares application info
|
|
||||||
#
|
|
||||||
set( CALAMARES_ORGANIZATION_NAME "Calamares" )
|
|
||||||
set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" )
|
|
||||||
set( CALAMARES_APPLICATION_NAME "Calamares" )
|
|
||||||
set( CALAMARES_DESCRIPTION_SUMMARY
|
|
||||||
"The distribution-independent installer framework" )
|
|
||||||
|
|
||||||
### Transifex (languages) info
|
|
||||||
#
|
|
||||||
# complete = 100% translated,
|
|
||||||
# good = nearly complete (use own judgement, right now >= 75%)
|
|
||||||
# ok = incomplete (more than 25% untranslated, at least 5% translated),
|
|
||||||
# incomplete = <5% translated, placeholder in tx; these are not included.
|
|
||||||
#
|
|
||||||
# Language en (source language) is added later. It isn't listed in
|
|
||||||
# Transifex either. Get the list of languages and their status
|
|
||||||
# from https://transifex.com/calamares/calamares/ , or (preferably)
|
|
||||||
# use ci/txstats.py to automatically check.
|
|
||||||
#
|
|
||||||
# When adding a new language, take care that it is properly loaded
|
|
||||||
# by the translation framework. Languages with alternate scripts
|
|
||||||
# (sr@latin in particular) may need special handling in CalamaresUtils.cpp.
|
|
||||||
#
|
|
||||||
# TODO: drop the es_ES translation from Transifex
|
|
||||||
#
|
|
||||||
# NOTE: move eo (Esperanto) to _ok once Qt can actually create a
|
|
||||||
# locale for it. (Qt 5.12.2 can, see check later on).
|
|
||||||
# NOTE: update these lines by running txstats.py, or copy these four lines
|
|
||||||
# and prefix each variable name with "p", so that the automatic
|
|
||||||
# checks for new languages and misspelled ones are done (that is,
|
|
||||||
# copy these four lines to four backup lines, add "p", and then update
|
|
||||||
# the original four lines with the current translations).
|
|
||||||
#
|
|
||||||
# Total 66 languages
|
|
||||||
set( _tx_complete az az_AZ ca he hi hr ja sq tr_TR uk zh_TW )
|
|
||||||
set( _tx_good as ast be cs_CZ da de es fi_FI fr hu it_IT ko lt ml
|
|
||||||
nl pt_BR pt_PT ru sk sv zh_CN )
|
|
||||||
set( _tx_ok ar bg el en_GB es_MX es_PR et eu fa gl id is mr nb pl
|
|
||||||
ro sl sr sr@latin th )
|
|
||||||
set( _tx_incomplete bn ca@valencia eo fr_CH gu kk kn lo lv mk ne_NP
|
|
||||||
ur uz )
|
|
||||||
|
|
||||||
### Required versions
|
|
||||||
#
|
|
||||||
# See DEPENDENCIES section below.
|
|
||||||
set( QT_VERSION 5.9.0 )
|
|
||||||
set( YAMLCPP_VERSION 0.5.1 )
|
|
||||||
set( ECM_VERSION 5.18 )
|
|
||||||
set( PYTHONLIBS_VERSION 3.3 )
|
|
||||||
set( BOOSTPYTHON_VERSION 1.55.0 )
|
|
||||||
|
|
||||||
|
|
||||||
### CMAKE SETUP
|
|
||||||
#
|
|
||||||
set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
|
||||||
|
|
||||||
# Enable IN_LIST
|
|
||||||
if( POLICY CMP0057 )
|
|
||||||
cmake_policy( SET CMP0057 NEW )
|
|
||||||
endif()
|
|
||||||
# Let ``AUTOMOC`` and ``AUTOUIC`` process ``GENERATED`` files.
|
|
||||||
if( POLICY CMP0071 )
|
|
||||||
cmake_policy( SET CMP0071 NEW )
|
|
||||||
endif()
|
|
||||||
# Recognize more macros to trigger automoc
|
|
||||||
if(NOT CMAKE_VERSION VERSION_LESS "3.10.0")
|
|
||||||
list(APPEND CMAKE_AUTOMOC_MACRO_NAMES
|
|
||||||
"K_PLUGIN_FACTORY_WITH_JSON"
|
|
||||||
"K_EXPORT_PLASMA_DATAENGINE_WITH_JSON"
|
|
||||||
"K_EXPORT_PLASMA_RUNNER"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# CMake Modules
|
|
||||||
include( CMakePackageConfigHelpers )
|
|
||||||
include( CTest )
|
|
||||||
include( FeatureSummary )
|
|
||||||
|
|
||||||
# Calamares Modules
|
|
||||||
include( CMakeColors )
|
|
||||||
|
|
||||||
### C++ SETUP
|
|
||||||
#
|
|
||||||
set( CMAKE_CXX_STANDARD 14 )
|
|
||||||
set( CMAKE_CXX_STANDARD_REQUIRED ON )
|
|
||||||
set( CMAKE_C_STANDARD 99 )
|
|
||||||
set( CMAKE_C_STANDARD_REQUIRED ON )
|
|
||||||
|
|
||||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
|
||||||
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 "${CMAKE_C_FLAGS} -Wall -std=c99" )
|
||||||
set( CMAKE_C_FLAGS_DEBUG "-g" )
|
set( CMAKE_C_FLAGS_DEBUG "-g" )
|
||||||
set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||||
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
||||||
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||||
|
|
||||||
# Clang warnings: doing *everything* is counter-productive, since it warns
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything -std=c++11" )
|
||||||
# about things which we can't fix (e.g. C++98 incompatibilities, but
|
set( CMAKE_CXX_FLAGS_DEBUG "-g" )
|
||||||
# Calamares is C++14).
|
|
||||||
foreach( CLANG_WARNINGS
|
|
||||||
-Weverything
|
|
||||||
-Wno-c++98-compat
|
|
||||||
-Wno-c++98-compat-pedantic
|
|
||||||
-Wno-padded
|
|
||||||
-Wno-undefined-reinterpret-cast
|
|
||||||
-Wno-global-constructors
|
|
||||||
-Wno-exit-time-destructors
|
|
||||||
-Wno-missing-prototypes
|
|
||||||
-Wno-documentation-unknown-command
|
|
||||||
-Wno-unknown-warning-option
|
|
||||||
-Werror=return-type
|
|
||||||
)
|
|
||||||
string( APPEND CMAKE_CXX_FLAGS " ${CLANG_WARNINGS}" )
|
|
||||||
endforeach()
|
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='//' -DFALLTHRU='[[clang::fallthrough]]'")
|
|
||||||
|
|
||||||
# Third-party code where we don't care so much about compiler warnings
|
|
||||||
# (because it's uncomfortable to patch) get different flags; use
|
|
||||||
# mark_thirdparty_code( <file> [<file>...] )
|
|
||||||
# to switch off warnings for those sources.
|
|
||||||
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_MINSIZEREL "-Os -DNDEBUG" )
|
||||||
set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" )
|
set( CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
||||||
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
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" )
|
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
|
||||||
|
|
||||||
# The path prefix is only relevant for CMake 3.16 and later, fixes #1286
|
|
||||||
set( CMAKE_AUTOMOC_PATH_PREFIX OFF )
|
|
||||||
set( CALAMARES_AUTOMOC_OPTIONS "-butils/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_C_FLAGS "${CMAKE_C_FLAGS} -std=c99" )
|
||||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wl,--no-undefined" )
|
||||||
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
||||||
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
|
|
||||||
# on code that we're not going to fix. Call this with a list of files.
|
|
||||||
macro(mark_thirdparty_code)
|
|
||||||
set_source_files_properties( ${ARGV}
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_FLAGS "${SUPPRESS_3RDPARTY_WARNINGS}"
|
|
||||||
COMPILE_DEFINITIONS "THIRDPARTY"
|
|
||||||
)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
if( CMAKE_COMPILER_IS_GNUCXX )
|
if( CMAKE_COMPILER_IS_GNUCXX )
|
||||||
if( CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR
|
if( CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR
|
||||||
CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9 )
|
CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9 )
|
||||||
@@ -279,258 +38,66 @@ if( CMAKE_COMPILER_IS_GNUCXX )
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
cmake_policy( SET CMP0023 OLD )
|
||||||
|
|
||||||
### DEPENDENCIES
|
# Keep cmake 3.0 quiet
|
||||||
#
|
if( POLICY CMP0043 )
|
||||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui LinguistTools Network Svg Widgets )
|
cmake_policy( SET CMP0043 OLD )
|
||||||
if( WITH_QML )
|
|
||||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Quick QuickWidgets )
|
|
||||||
endif()
|
|
||||||
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()
|
|
||||||
# Optional Qt parts
|
|
||||||
find_package( Qt5DBus CONFIG )
|
|
||||||
|
|
||||||
find_package( YAMLCPP ${YAMLCPP_VERSION} REQUIRED )
|
|
||||||
if( INSTALL_POLKIT )
|
|
||||||
find_package( PolkitQt5-1 REQUIRED )
|
|
||||||
else()
|
|
||||||
# Find it anyway, for dependencies-reporting
|
|
||||||
find_package( PolkitQt5-1 )
|
|
||||||
endif()
|
|
||||||
set_package_properties(
|
|
||||||
PolkitQt5-1 PROPERTIES
|
|
||||||
DESCRIPTION "Qt5 support for Polkit"
|
|
||||||
URL "https://cgit.kde.org/polkit-qt-1.git"
|
|
||||||
PURPOSE "PolkitQt5-1 helps with installing Polkit configuration"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Find ECM once, and add it to the module search path; Calamares
|
|
||||||
# modules that need ECM can do
|
|
||||||
# find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE),
|
|
||||||
# no need to mess with the module path after.
|
|
||||||
find_package(ECM ${ECM_VERSION} NO_MODULE)
|
|
||||||
if( ECM_FOUND )
|
|
||||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
|
|
||||||
if ( BUILD_TESTING )
|
|
||||||
# ECM implies that we can build the tests, too
|
|
||||||
find_package( Qt5 COMPONENTS Test REQUIRED )
|
|
||||||
include( ECMAddTests )
|
|
||||||
endif()
|
|
||||||
include(KDEInstallDirs)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package( KF5 QUIET COMPONENTS CoreAddons Crash DBusAddons )
|
include( MacroOptionalFindPackage )
|
||||||
set_package_properties(
|
include( MacroLogFeature )
|
||||||
KF5::CoreAddons PROPERTIES
|
|
||||||
TYPE REQUIRED
|
|
||||||
DESCRIPTION "Classes built on QtCore for About Data"
|
|
||||||
URL "https://api.kde.org/frameworks/kcoreaddons/"
|
|
||||||
PURPOSE "About Calamares"
|
|
||||||
)
|
|
||||||
if( NOT KF5Crash_FOUND )
|
|
||||||
if( WITH_KF5Crash )
|
|
||||||
message(WARNING "WITH_KF5Crash is set, but KF5::Crash is not available.")
|
|
||||||
endif()
|
|
||||||
set( WITH_KF5Crash OFF )
|
|
||||||
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()
|
|
||||||
|
|
||||||
# TODO:3.3: Use FindPython3 instead
|
set( QT_VERSION 5.3.0 )
|
||||||
find_package( PythonInterp ${PYTHONLIBS_VERSION} )
|
|
||||||
set_package_properties(
|
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg Quick QuickWidgets )
|
||||||
PythonInterp PROPERTIES
|
find_package( YamlCpp 0.5.1 REQUIRED )
|
||||||
DESCRIPTION "Python 3 interpreter."
|
find_package( PolkitQt5-1 REQUIRED )
|
||||||
URL "https://python.org"
|
|
||||||
PURPOSE "Python 3 interpreter for certain tests."
|
option( WITH_PYTHON "Enable Python modules support." ON )
|
||||||
)
|
|
||||||
if ( PYTHONINTERP_FOUND )
|
macro_optional_find_package( PythonLibs 3.3 )
|
||||||
message(STATUS "Found Python 3 interpreter ${PYTHON_EXECUTABLE}")
|
macro_log_feature(
|
||||||
if ( BUILD_SCHEMA_TESTING )
|
PYTHONLIBS_FOUND
|
||||||
# The configuration validator script has some dependencies,
|
"Python"
|
||||||
# and if they are not installed, don't run. If errors out
|
"C interface libraries for the Python 3 interpreter."
|
||||||
# with exit(1) on missing dependencies.
|
"http://python.org"
|
||||||
exec_program( ${PYTHON_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" -x RETURN_VALUE _validator_deps )
|
FALSE "3.3"
|
||||||
# It should never succeed, but only returns 1 when the imports fail
|
"Python 3 is used for some Calamares job modules."
|
||||||
if ( _validator_deps EQUAL 1 )
|
|
||||||
message(STATUS "BUILD_SCHEMA_TESTING dependencies are missing." )
|
|
||||||
set( BUILD_SCHEMA_TESTING OFF )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# Can't run schema tests without Python3.
|
|
||||||
set( BUILD_SCHEMA_TESTING OFF )
|
|
||||||
endif()
|
|
||||||
find_package( PythonLibs ${PYTHONLIBS_VERSION} )
|
|
||||||
set_package_properties(
|
|
||||||
PythonLibs PROPERTIES
|
|
||||||
DESCRIPTION "C interface libraries for the Python 3 interpreter."
|
|
||||||
URL "https://python.org"
|
|
||||||
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.
|
|
||||||
# or so) the mess that is the Calamares find code picks the wrong
|
|
||||||
# bits. Suppress those CMake config files, as suggested by @jmrcpn
|
|
||||||
set(Boost_NO_BOOST_CMAKE ON)
|
|
||||||
include( BoostPython3 )
|
include( BoostPython3 )
|
||||||
find_boost_python3( ${BOOSTPYTHON_VERSION} ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND )
|
find_boost_python3( 1.54.0 ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND )
|
||||||
set_package_properties(
|
macro_log_feature(
|
||||||
Boost PROPERTIES
|
CALAMARES_BOOST_PYTHON3_FOUND
|
||||||
PURPOSE "Boost.Python is used for Python job modules."
|
"Boost.Python"
|
||||||
)
|
"A C++ library which enables seamless interoperability between C++ and Python 3."
|
||||||
# TODO:3.3: Remove PythonQt support
|
"http://www.boost.org"
|
||||||
find_package( PythonQt )
|
FALSE "1.54.0"
|
||||||
set_package_properties( PythonQt PROPERTIES
|
"Boost.Python is used for interfacing with Calamares job modules written in Python 3."
|
||||||
DESCRIPTION "A Python embedding solution for Qt applications."
|
|
||||||
URL "http://pythonqt.sourceforge.net"
|
|
||||||
PURPOSE "PythonQt is used for Python view modules."
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if( NOT PYTHONLIBS_FOUND OR NOT CALAMARES_BOOST_PYTHON3_FOUND )
|
if ( PYTHONLIBS_NOTFOUND OR NOT CALAMARES_BOOST_PYTHON3_FOUND )
|
||||||
message(STATUS "Disabling Boost::Python modules")
|
|
||||||
set( WITH_PYTHON OFF )
|
set( WITH_PYTHON OFF )
|
||||||
endif()
|
endif()
|
||||||
if( NOT PYTHONLIBS_FOUND OR NOT PYTHONQT_FOUND )
|
|
||||||
message(STATUS "Disabling PythonQt modules")
|
|
||||||
set( WITH_PYTHONQT OFF )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Now we know the state of the ABI-options, copy them into "Calamares_"
|
###
|
||||||
# prefixed variables, to match how the variables would-be-named
|
### Calamares application info
|
||||||
# when building out-of-tree.
|
###
|
||||||
set(Calamares_WITH_PYTHON ${WITH_PYTHON})
|
set( CALAMARES_ORGANIZATION_NAME "Calamares" )
|
||||||
set(Calamares_WITH_PYTHONQT ${WITH_PYTHONQT})
|
set( CALAMARES_ORGANIZATION_DOMAIN "github.com/calamares" )
|
||||||
set(Calamares_WITH_QML ${WITH_QML})
|
set( CALAMARES_APPLICATION_NAME "Calamares" )
|
||||||
|
set( CALAMARES_DESCRIPTION_SUMMARY "The distribution-independent installer framework" )
|
||||||
|
set( CALAMARES_TRANSLATION_LANGUAGES ar ast ca cs_CZ da de en en_GB es_MX es fi_FI fr hr hu id it_IT ja lt nl pl pt_BR pt_PT ro ru sk sl sv th tr_TR zh_CN zh_TW )
|
||||||
|
|
||||||
### Transifex Translation status
|
set( CALAMARES_VERSION_MAJOR 1 )
|
||||||
#
|
set( CALAMARES_VERSION_MINOR 1 )
|
||||||
# Construct language lists for use. If there are p_tx* variables,
|
set( CALAMARES_VERSION_PATCH 4 )
|
||||||
# then run an extra cmake-time check for consistency of the old
|
set( CALAMARES_VERSION_RC 0 )
|
||||||
# (p_tx*) and new (_tx*) lists.
|
|
||||||
#
|
|
||||||
set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_incomplete} )
|
|
||||||
set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_incomplete} )
|
|
||||||
set( tx_errors OFF )
|
|
||||||
if ( prev_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
|
|
||||||
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" )
|
|
||||||
if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} )
|
|
||||||
message(WARNING "Language ${l} has no .ts file yet.")
|
|
||||||
set( tx_errors ON )
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
unset( p_l )
|
|
||||||
unset( l )
|
|
||||||
endif()
|
|
||||||
unset( prev_tx )
|
|
||||||
unset( curr_tx )
|
|
||||||
if( tx_errors )
|
|
||||||
message( FATAL_ERROR "Translation warnings, see above." )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set( CALAMARES_TRANSLATION_LANGUAGES en ${_tx_complete} ${_tx_good} ${_tx_ok} )
|
|
||||||
list( SORT CALAMARES_TRANSLATION_LANGUAGES )
|
|
||||||
|
|
||||||
add_subdirectory( lang ) # i18n tools
|
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
### Example Distro
|
|
||||||
#
|
|
||||||
# For testing purposes Calamares includes a very, very, limited sample
|
|
||||||
# distro called "Generic". The root filesystem of "Generic" lives in
|
|
||||||
# data/example-root and can be squashed up as part of the build, so
|
|
||||||
# that a pure-upstream run of ./calamares -d from the build directory
|
|
||||||
# (with all the default settings and configurations) can actually
|
|
||||||
# do an complete example run.
|
|
||||||
#
|
|
||||||
# Some binaries from the build host (e.g. /bin and /lib) are also
|
|
||||||
# squashed into the example filesystem.
|
|
||||||
#
|
|
||||||
# To build the example distro (for use by the default, example,
|
|
||||||
# unsquashfs module), build the target 'example-distro', eg.:
|
|
||||||
#
|
|
||||||
# make example-distro
|
|
||||||
#
|
|
||||||
find_program( mksquashfs_PROGRAM mksquashfs )
|
|
||||||
if( mksquashfs_PROGRAM )
|
|
||||||
set( mksquashfs_FOUND ON )
|
|
||||||
set( src_fs ${CMAKE_SOURCE_DIR}/data/example-root/ )
|
|
||||||
set( dst_fs ${CMAKE_BINARY_DIR}/example.sqfs )
|
|
||||||
if( EXISTS ${src_fs} )
|
|
||||||
# based on the build host. If /lib64 exists, assume it is needed.
|
|
||||||
# Collect directories needed for a minimal binary distro,
|
|
||||||
# Note that the last path component is added to the root, so
|
|
||||||
# if you add /usr/sbin here, it will be put into /sbin_1.
|
|
||||||
# Add such paths to /etc/profile under ${src_fs}.
|
|
||||||
set( candidate_fs /sbin /bin /lib /lib64 )
|
|
||||||
set( host_fs "" )
|
|
||||||
foreach( c_fs ${candidate_fs} )
|
|
||||||
if( EXISTS ${c_fs} )
|
|
||||||
list( APPEND host_fs ${c_fs} )
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${dst_fs}
|
|
||||||
COMMAND ${mksquashfs_PROGRAM} ${src_fs} ${dst_fs} -all-root
|
|
||||||
COMMAND ${mksquashfs_PROGRAM} ${host_fs} ${dst_fs} -all-root
|
|
||||||
)
|
|
||||||
add_custom_target(example-distro DEPENDS ${dst_fs})
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set( mksquashfs_FOUND OFF )
|
|
||||||
endif()
|
|
||||||
# Doesn't list mksquashfs as an optional dep, though, because it
|
|
||||||
# hasn't been sent through the find_package() scheme.
|
|
||||||
#
|
|
||||||
# "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html"
|
|
||||||
add_feature_info( ExampleDistro ${mksquashfs_FOUND} "Create example-distro target.")
|
|
||||||
|
|
||||||
|
|
||||||
### CALAMARES PROPER
|
|
||||||
#
|
|
||||||
set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} )
|
set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} )
|
||||||
# In rare cases we have hotfix-releases with a tweak
|
|
||||||
if( CALAMARES_VERSION_TWEAK )
|
|
||||||
set( CALAMARES_VERSION "${CALAMARES_VERSION}.${CALAMARES_VERSION_TWEAK}" )
|
|
||||||
endif()
|
|
||||||
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
|
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
|
||||||
if( CALAMARES_VERSION_RC )
|
if( CALAMARES_VERSION_RC )
|
||||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} )
|
set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} )
|
||||||
@@ -550,21 +117,8 @@ if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" )
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Special target for not-RC (e.g. might-be-release) builds.
|
|
||||||
# This is used by the release script to get the version.
|
|
||||||
if ( CALAMARES_VERSION_RC EQUAL 0 )
|
|
||||||
add_custom_target(show-version
|
|
||||||
${CMAKE_COMMAND} -E echo CALAMARES_VERSION=${CALAMARES_VERSION_SHORT}
|
|
||||||
USES_TERMINAL
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# enforce using constBegin, constEnd for const-iterators
|
# enforce using constBegin, constEnd for const-iterators
|
||||||
add_definitions(
|
add_definitions( "-DQT_STRICT_ITERATORS" )
|
||||||
-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}" )
|
||||||
@@ -581,124 +135,88 @@ endif()
|
|||||||
# make predefined install dirs available everywhere
|
# make predefined install dirs available everywhere
|
||||||
include( GNUInstallDirs )
|
include( GNUInstallDirs )
|
||||||
|
|
||||||
# This is used by CalamaresAddLibrary; once Calamares is installed,
|
# make uninstall support
|
||||||
# the CalamaresConfig.cmake module sets this variable to the IMPORTED
|
|
||||||
# libraries for Calamares.
|
|
||||||
set( Calamares_LIBRARIES calamares )
|
|
||||||
|
|
||||||
add_subdirectory( src )
|
|
||||||
|
|
||||||
add_feature_info(Python ${WITH_PYTHON} "Python job modules")
|
|
||||||
add_feature_info(PythonQt ${WITH_PYTHONQT} "Python view modules")
|
|
||||||
add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration")
|
|
||||||
add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash")
|
|
||||||
add_feature_info(KDBusAddons ${WITH_KF5DBus} "Unique-application via DBus")
|
|
||||||
|
|
||||||
### CMake infrastructure installation
|
|
||||||
#
|
|
||||||
#
|
|
||||||
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}" )
|
|
||||||
|
|
||||||
export( PACKAGE Calamares )
|
|
||||||
configure_package_config_file(
|
|
||||||
"CalamaresConfig.cmake.in"
|
|
||||||
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
|
||||||
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
|
||||||
PATH_VARS
|
|
||||||
CMAKE_INSTALL_INCLUDEDIR
|
|
||||||
CMAKE_INSTALL_LIBDIR
|
|
||||||
CMAKE_INSTALL_DATADIR
|
|
||||||
)
|
|
||||||
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(
|
|
||||||
FILES
|
|
||||||
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
|
||||||
"${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake"
|
|
||||||
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
|
||||||
"CMakeModules/CalamaresAddLibrary.cmake"
|
|
||||||
"CMakeModules/CalamaresAddModuleSubdirectory.cmake"
|
|
||||||
"CMakeModules/CalamaresAddPlugin.cmake"
|
|
||||||
"CMakeModules/CalamaresAddTest.cmake"
|
|
||||||
"CMakeModules/CalamaresAddTranslations.cmake"
|
|
||||||
"CMakeModules/CalamaresAutomoc.cmake"
|
|
||||||
"CMakeModules/CMakeColors.cmake"
|
|
||||||
"CMakeModules/FindYAMLCPP.cmake"
|
|
||||||
DESTINATION
|
|
||||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
|
||||||
)
|
|
||||||
|
|
||||||
### Miscellaneous installs
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if( INSTALL_CONFIG )
|
|
||||||
install(
|
|
||||||
FILES settings.conf
|
|
||||||
DESTINATION share/calamares
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if( INSTALL_POLKIT )
|
|
||||||
install(
|
|
||||||
FILES com.github.calamares.calamares.policy
|
|
||||||
DESTINATION "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES calamares.desktop
|
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
|
|
||||||
)
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES man/calamares.8
|
|
||||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man8/
|
|
||||||
)
|
|
||||||
|
|
||||||
# uninstall target
|
|
||||||
configure_file(
|
configure_file(
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||||
IMMEDIATE @ONLY
|
IMMEDIATE @ONLY
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target( uninstall
|
# Early configure these files as we need them later on
|
||||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY )
|
||||||
|
file( COPY CalamaresAddLibrary.cmake DESTINATION "${PROJECT_BINARY_DIR}" )
|
||||||
|
file( COPY CalamaresAddModuleSubdirectory.cmake DESTINATION "${PROJECT_BINARY_DIR}" )
|
||||||
|
file( COPY CalamaresAddPlugin.cmake DESTINATION "${PROJECT_BINARY_DIR}" )
|
||||||
|
file( COPY CalamaresAddBrandingSubdirectory.cmake DESTINATION "${PROJECT_BINARY_DIR}" )
|
||||||
|
|
||||||
|
set( CALAMARES_LIBRARIES calamares )
|
||||||
|
|
||||||
|
add_subdirectory( src )
|
||||||
|
|
||||||
|
macro_display_feature_log()
|
||||||
|
|
||||||
|
if ( NOT WITH_PYTHON )
|
||||||
|
message( "-- WARNING: Building Calamares without Python support. Python modules will not work.\n" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add all targets to the build-tree export set
|
||||||
|
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}" )
|
||||||
|
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 )
|
||||||
|
|
||||||
|
# Create a CalamaresBuildTreeSettings.cmake file for the use from the build tree
|
||||||
|
configure_file( CalamaresBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/CalamaresBuildTreeSettings.cmake" @ONLY )
|
||||||
|
|
||||||
|
# Create the CalamaresConfig.cmake and CalamaresConfigVersion files
|
||||||
|
file( RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}" )
|
||||||
|
|
||||||
|
configure_file( CalamaresConfig.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" @ONLY )
|
||||||
|
configure_file( CalamaresConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" @ONLY )
|
||||||
|
|
||||||
|
# Install the cmake files
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresUse.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresAddPlugin.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresAddModuleSubdirectory.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresAddLibrary.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/CalamaresAddBrandingSubdirectory.cmake"
|
||||||
|
DESTINATION
|
||||||
|
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
### CMAKE SUMMARY REPORT
|
# Install the export set for use with the install-tree
|
||||||
#
|
install(
|
||||||
get_directory_property( SKIPPED_MODULES
|
EXPORT
|
||||||
DIRECTORY src/modules
|
CalamaresLibraryDepends
|
||||||
DEFINITION LIST_SKIPPED_MODULES
|
DESTINATION
|
||||||
|
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||||
)
|
)
|
||||||
calamares_explain_skipped_modules( ${SKIPPED_MODULES} )
|
|
||||||
|
|
||||||
feature_summary(
|
install(
|
||||||
WHAT DISABLED_FEATURES
|
FILES
|
||||||
DESCRIPTION "The following features have been disabled:"
|
settings.conf
|
||||||
QUIET_ON_EMPTY
|
DESTINATION
|
||||||
|
share/calamares
|
||||||
)
|
)
|
||||||
feature_summary(
|
|
||||||
WHAT OPTIONAL_PACKAGES_NOT_FOUND
|
install(
|
||||||
DESCRIPTION "The following OPTIONAL packages were not found:"
|
FILES
|
||||||
QUIET_ON_EMPTY
|
com.github.calamares.calamares.policy
|
||||||
|
DESTINATION
|
||||||
|
"${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
||||||
)
|
)
|
||||||
feature_summary(
|
|
||||||
WHAT REQUIRED_PACKAGES_NOT_FOUND
|
install(
|
||||||
FATAL_ON_MISSING_REQUIRED_PACKAGES
|
FILES
|
||||||
DESCRIPTION "The following REQUIRED packages were not found:"
|
calamares.desktop
|
||||||
QUIET_ON_EMPTY
|
DESTINATION
|
||||||
|
${CMAKE_INSTALL_DATADIR}/applications
|
||||||
)
|
)
|
||||||
|
@@ -15,69 +15,43 @@
|
|||||||
# libboost_python-3.4.so
|
# libboost_python-3.4.so
|
||||||
# depending on what python's targets you selected during install
|
# depending on what python's targets you selected during install
|
||||||
#
|
#
|
||||||
# On Fedora >= 30 instead, the boost-python3-devel provides boost library with a
|
|
||||||
# name like:
|
|
||||||
# libboost_python37.so
|
|
||||||
# depending on what python's targets you selected during install
|
|
||||||
#
|
|
||||||
# find_boost_python3() tries to find the package with different component
|
# find_boost_python3() tries to find the package with different component
|
||||||
# names. By default it tries "python3", "python-py$suffix" and
|
# names. By default it tries "python3", "python-py$suffix" and
|
||||||
# "python-$dotsuffix", where suffix is based on the `python_version` argument.
|
# "python-$dotsuffix", where suffix is based on the `python_version` argument.
|
||||||
# One can supply a custom component name by setting the
|
# One can supply a custom component name by setting the
|
||||||
# `CALAMARES_BOOST_PYTHON3_COMPONENT` variable at CMake time.
|
# `CALAMARES_BOOST_PYTHON3_COMPONENT` variable at CMake time.
|
||||||
|
|
||||||
set( CALAMARES_BOOST_PYTHON3_COMPONENT python3 CACHE STRING
|
set( CALAMARES_BOOST_PYTHON3_COMPONENT python3 CACHE STRING
|
||||||
"Name of the Boost.Python component. If Boost.Python is installed as
|
"Name of the Boost.Python component. If Boost.Python is installed as
|
||||||
libboost_python-foo.so then this variable should be set to 'python-foo'."
|
libboost_python-foo.so then this variable should be set to 'python-foo'."
|
||||||
)
|
)
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
macro( _find_boost_python3_int boost_version componentname found_var )
|
|
||||||
foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} ${componentname} )
|
|
||||||
find_package( Boost ${boost_version} QUIET COMPONENTS ${_fbp_name} )
|
|
||||||
string( TOUPPER ${_fbp_name} _fbp_uc_name )
|
|
||||||
if( Boost_${_fbp_uc_name}_FOUND )
|
|
||||||
if( CMAKE_SYSTEM_NAME MATCHES "FreeBSD" )
|
|
||||||
# No upcasing
|
|
||||||
set( ${found_var} ${_fbp_name} )
|
|
||||||
else()
|
|
||||||
set( ${found_var} ${_fbp_uc_name} )
|
|
||||||
endif()
|
|
||||||
break()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro( find_boost_python3 boost_version python_version found_var )
|
macro( find_boost_python3 boost_version python_version found_var )
|
||||||
set( ${found_var} OFF )
|
set( ${found_var} OFF )
|
||||||
set( _fbp_found OFF )
|
|
||||||
|
|
||||||
# turns "3.4.123abc" into "34"
|
# turns "3.4.123abc" into "34"
|
||||||
string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1\\2" _fbp_python_short_version ${python_version} )
|
string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1\\2" _fbp_python_short_version ${python_version} )
|
||||||
_find_boost_python3_int( ${boost_version} python-py${_fbp_python_short_version} _fbp_found )
|
|
||||||
|
|
||||||
if (NOT _fbp_found)
|
foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} python-py${_fbp_python_short_version} )
|
||||||
_find_boost_python3_int( ${boost_version} python${_fbp_python_short_version} _fbp_found )
|
find_package( Boost ${boost_version} QUIET COMPONENTS ${_fbp_name} )
|
||||||
endif()
|
string( TOUPPER ${_fbp_name} _fbp_uc_name )
|
||||||
|
if( Boost_${_fbp_uc_name}_FOUND )
|
||||||
|
set( ${found_var} ON )
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
if (NOT _fbp_found)
|
if (NOT ${found_var})
|
||||||
# The following loop changes the searched name for Gentoo based distributions
|
# The following loop changes the searched name for Gentoo based distributions
|
||||||
# turns "3.4.123abc" into "3.4"
|
# turns "3.4.123abc" into "3.4"
|
||||||
string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1.\\2" _fbp_python_short_version ${python_version} )
|
string( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\..*" "\\1.\\2" _fbp_python_short_version ${python_version} )
|
||||||
_find_boost_python3_int( ${boost_version} python-${_fbp_python_short_version} _fbp_found )
|
foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} python-${_fbp_python_short_version} )
|
||||||
|
find_package( Boost ${boost_version} QUIET COMPONENTS ${_fbp_name} )
|
||||||
|
string( TOUPPER ${_fbp_name} _fbp_uc_name )
|
||||||
|
if( Boost_${_fbp_uc_name}_FOUND )
|
||||||
|
set( ${found_var} ON )
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( ${found_var} ${_fbp_found} )
|
|
||||||
|
|
||||||
# This is superfluous, but allows proper reporting in the features list
|
|
||||||
if ( _fbp_found )
|
|
||||||
find_package( Boost ${boost_version} COMPONENTS ${_fbp_found} )
|
|
||||||
else()
|
|
||||||
find_package( Boost ${boost_version} COMPONENTS Python )
|
|
||||||
endif()
|
|
||||||
set_package_properties(
|
|
||||||
Boost PROPERTIES
|
|
||||||
DESCRIPTION "A C++ library which enables seamless interoperability between C++ and Python 3."
|
|
||||||
URL "http://www.boost.org"
|
|
||||||
)
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@@ -1,16 +1,8 @@
|
|||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
set(_use_color ON)
|
# [ -t 2 ] tests whether stderr is interactive.
|
||||||
if("0" STREQUAL "$ENV{CLICOLOR}")
|
# The negation '!' is because for POSIX shells, 0 is true and 1 is false.
|
||||||
set(_use_color OFF)
|
execute_process(COMMAND test ! -t 2 RESULT_VARIABLE IS_STDERR_INTERACTIVE)
|
||||||
endif()
|
if(IS_STDERR_INTERACTIVE)
|
||||||
if("0" STREQUAL "$ENV{CLICOLOR_FORCE}")
|
|
||||||
set(_use_color OFF)
|
|
||||||
endif()
|
|
||||||
if(NOT CMAKE_COLOR_MAKEFILE)
|
|
||||||
set(_use_color OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(_use_color)
|
|
||||||
string(ASCII 27 Esc)
|
string(ASCII 27 Esc)
|
||||||
set(ColorReset "${Esc}[m")
|
set(ColorReset "${Esc}[m")
|
||||||
set(ColorBold "${Esc}[1m")
|
set(ColorBold "${Esc}[1m")
|
||||||
@@ -28,5 +20,5 @@ if(NOT WIN32)
|
|||||||
set(BoldMagenta "${Esc}[1;35m")
|
set(BoldMagenta "${Esc}[1;35m")
|
||||||
set(BoldCyan "${Esc}[1;36m")
|
set(BoldCyan "${Esc}[1;36m")
|
||||||
set(BoldWhite "${Esc}[1;37m")
|
set(BoldWhite "${Esc}[1;37m")
|
||||||
endif()
|
endif(IS_STDERR_INTERACTIVE)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -1,152 +0,0 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Support macros for creating Calamares branding components.
|
|
||||||
#
|
|
||||||
# Calamares branding components have two parts:
|
|
||||||
# - a branding.desc file that tells Calamares how to describe the product
|
|
||||||
# (e.g. strings like "Generic GNU/Linux") and the name of a QML file
|
|
||||||
# (the "slideshow") that is displayed during installation.
|
|
||||||
# - the QML files themselves, plus supporting images etc.
|
|
||||||
#
|
|
||||||
# Branding components can be created inside the Calamares source tree
|
|
||||||
# (there is one example the `default/` branding, which is also connected
|
|
||||||
# to the default configuration shipped with Calamares), but they can be
|
|
||||||
# built outside of, and largely independently of, Calamares by using
|
|
||||||
# these CMake macros.
|
|
||||||
#
|
|
||||||
# See the calamares-examples repository for more examples.
|
|
||||||
#
|
|
||||||
include( CMakeParseArguments)
|
|
||||||
|
|
||||||
include( CMakeColors )
|
|
||||||
|
|
||||||
# Usage calamares_add_branding( <name> [DIRECTORY <dir>] [SUBDIRECTORIES <dir> ...])
|
|
||||||
#
|
|
||||||
# Adds a branding component to the build:
|
|
||||||
# - the component's top-level files are copied into the build-dir;
|
|
||||||
# CMakeLists.txt is excluded from the glob.
|
|
||||||
# - the component's top-level files are installed into the component branding dir
|
|
||||||
#
|
|
||||||
# The branding component lives in <dir> if given, otherwise the
|
|
||||||
# current source directory. The branding component is installed
|
|
||||||
# with the given <name>, which is usually the name of the
|
|
||||||
# directory containing the component, and which must match the
|
|
||||||
# *componentName* in `branding.desc`.
|
|
||||||
#
|
|
||||||
# If SUBDIRECTORIES are given, then those are copied (each one level deep)
|
|
||||||
# to the installation location as well, preserving the subdirectory name.
|
|
||||||
function( calamares_add_branding NAME )
|
|
||||||
cmake_parse_arguments( _CABT "" "DIRECTORY" "SUBDIRECTORIES" ${ARGN} )
|
|
||||||
if (NOT _CABT_DIRECTORY)
|
|
||||||
set(_CABT_DIRECTORY ".")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set( SUBDIRECTORY ${_CABT_DIRECTORY} )
|
|
||||||
set( _brand_dir ${_CABT_DIRECTORY} )
|
|
||||||
|
|
||||||
set( BRANDING_DIR share/calamares/branding )
|
|
||||||
set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} )
|
|
||||||
|
|
||||||
foreach( _subdir "" ${_CABT_SUBDIRECTORIES} )
|
|
||||||
file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${_brand_dir} "${_brand_dir}/${_subdir}/*" )
|
|
||||||
foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} )
|
|
||||||
set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} )
|
|
||||||
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
|
|
||||||
configure_file( ${_subpath} ${_subpath} COPYONLY )
|
|
||||||
|
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath}
|
|
||||||
DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ )
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${NAME}${ColorReset}" )
|
|
||||||
message( " ${Green}TYPE:${ColorReset} branding component" )
|
|
||||||
message( " ${Green}BRANDING_COMPONENT_DESTINATION:${ColorReset} ${BRANDING_COMPONENT_DESTINATION}" )
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Usage calamares_add_branding_translations( <name> [DIRECTORY <dir>])
|
|
||||||
#
|
|
||||||
# Adds the translations for a branding component to the build:
|
|
||||||
# - the component's lang/ directory is scanned for .ts files
|
|
||||||
# - the component's translations are installed into the component branding dir
|
|
||||||
#
|
|
||||||
# Translation files must be called calamares-<name>_<lang>.ts . Optionally
|
|
||||||
# the lang/ dir is found in the given <dir> instead of the current source
|
|
||||||
# directory.
|
|
||||||
function( calamares_add_branding_translations NAME )
|
|
||||||
cmake_parse_arguments( _CABT "" "DIRECTORY" "" ${ARGN} )
|
|
||||||
if (NOT _CABT_DIRECTORY)
|
|
||||||
set(_CABT_DIRECTORY ".")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set( SUBDIRECTORY ${_CABT_DIRECTORY} )
|
|
||||||
set( _brand_dir ${_CABT_DIRECTORY} )
|
|
||||||
|
|
||||||
set( BRANDING_DIR share/calamares/branding )
|
|
||||||
set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} )
|
|
||||||
|
|
||||||
file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" )
|
|
||||||
if ( BRANDING_TRANSLATION_FILES )
|
|
||||||
qt5_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} )
|
|
||||||
add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${QM_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/lang/
|
|
||||||
)
|
|
||||||
install( FILES ${QM_FILES} DESTINATION ${BRANDING_COMPONENT_DESTINATION}/lang/ )
|
|
||||||
list( LENGTH BRANDING_TRANSLATION_FILES _branding_count )
|
|
||||||
message( " ${Green}BRANDING_TRANSLATIONS:${ColorReset} ${_branding_count} language(s)" )
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Usage calamares_add_branding_subdirectory( <dir> [NAME <name>] [SUBDIRECTORIES <dir> ...])
|
|
||||||
#
|
|
||||||
# Adds a branding component from a subdirectory:
|
|
||||||
# - if there is a CMakeLists.txt, use that (that CMakeLists.txt should
|
|
||||||
# call suitable calamares_add_branding() and other macros to install
|
|
||||||
# the branding component).
|
|
||||||
# - otherwise assume a "standard" setup with top-level files and a lang/
|
|
||||||
# subdirectory for translations.
|
|
||||||
#
|
|
||||||
# If NAME is given, this is used instead of <dir> as the name of
|
|
||||||
# the branding component. This is needed if <dir> is more than
|
|
||||||
# one level deep, or to rename a component as it gets installed.
|
|
||||||
#
|
|
||||||
# If SUBDIRECTORIES are given, they are relative to <dir>, and are
|
|
||||||
# copied (one level deep) to the install location as well.
|
|
||||||
function( calamares_add_branding_subdirectory SUBDIRECTORY )
|
|
||||||
cmake_parse_arguments( _CABS "" "NAME" "SUBDIRECTORIES" ${ARGN} )
|
|
||||||
if (NOT _CABS_NAME)
|
|
||||||
set(_CABS_NAME "${SUBDIRECTORY}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
|
||||||
add_subdirectory( ${SUBDIRECTORY} )
|
|
||||||
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" )
|
|
||||||
calamares_add_branding( ${_CABS_NAME} DIRECTORY ${SUBDIRECTORY} SUBDIRECTORIES ${_CABS_SUBDIRECTORIES} )
|
|
||||||
if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" )
|
|
||||||
calamares_add_branding_translations( ${_CABS_NAME} DIRECTORY ${SUBDIRECTORY} )
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message( "-- ${BoldYellow}Warning:${ColorReset} tried to add branding component subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no branding.desc." )
|
|
||||||
endif()
|
|
||||||
message( "" )
|
|
||||||
endfunction()
|
|
@@ -1,214 +0,0 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Function and support code for adding a Calamares module (either a Qt / C++ plugin,
|
|
||||||
# or a Python module, or whatever) to the build.
|
|
||||||
#
|
|
||||||
include( CalamaresAddTranslations )
|
|
||||||
|
|
||||||
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
|
||||||
|
|
||||||
# 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()
|
|
||||||
|
|
||||||
function( calamares_add_module_subdirectory )
|
|
||||||
set( SUBDIRECTORY ${ARGV0} )
|
|
||||||
|
|
||||||
set( SKIPPED_MODULES )
|
|
||||||
set( MODULE_CONFIG_FILES "" )
|
|
||||||
|
|
||||||
set( _mod_dir "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" )
|
|
||||||
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
|
||||||
if( EXISTS "${_mod_dir}/CMakeLists.txt" )
|
|
||||||
add_subdirectory( ${SUBDIRECTORY} )
|
|
||||||
file( GLOB MODULE_CONFIG_FILES RELATIVE ${_mod_dir} "${SUBDIRECTORY}/*.conf" )
|
|
||||||
# Module has indicated it should be skipped, show that in
|
|
||||||
# the calling CMakeLists (which is src/modules/CMakeLists.txt normally).
|
|
||||||
if ( SKIPPED_MODULES )
|
|
||||||
set( SKIPPED_MODULES ${SKIPPED_MODULES} PARENT_SCOPE )
|
|
||||||
set( MODULE_CONFIG_FILES "" )
|
|
||||||
endif()
|
|
||||||
# ...otherwise, we look for a module.desc.
|
|
||||||
elseif( EXISTS "${_mod_dir}/module.desc" )
|
|
||||||
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
|
||||||
# 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.
|
|
||||||
get_filename_component(_dirname "${SUBDIRECTORY}" DIRECTORY)
|
|
||||||
if( _dirname )
|
|
||||||
# Remove the dirname and any leftover leading /s
|
|
||||||
string( REGEX REPLACE "^${_dirname}/*" "" _modulename "${SUBDIRECTORY}" )
|
|
||||||
set( MODULE_DESTINATION ${MODULES_DIR}/${_modulename} )
|
|
||||||
else()
|
|
||||||
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Read module.desc, check that the interface type is supported.
|
|
||||||
#
|
|
||||||
# _mod_enabled boolean if the module should be built (only if the interface is supported)
|
|
||||||
# _mod_reason is a human-readable explanation why it isn't built
|
|
||||||
# _mod_testing boolean if the module should be added to the loadmodule tests
|
|
||||||
file(STRINGS "${_mod_dir}/module.desc" MODULE_INTERFACE REGEX "^interface")
|
|
||||||
if ( MODULE_INTERFACE MATCHES "pythonqt" )
|
|
||||||
set( _mod_enabled ${Calamares_WITH_PYTHONQT} )
|
|
||||||
set( _mod_reason "No PythonQt support" )
|
|
||||||
set( _mod_testing OFF )
|
|
||||||
elseif ( MODULE_INTERFACE MATCHES "python" )
|
|
||||||
set( _mod_enabled ${Calamares_WITH_PYTHON} )
|
|
||||||
set( _mod_reason "No Python support" )
|
|
||||||
set( _mod_testing ON ) # Will check syntax and imports, at least
|
|
||||||
elseif ( MODULE_INTERFACE MATCHES "qtplugin" )
|
|
||||||
set( _mod_enabled OFF )
|
|
||||||
set( _mod_reason "C++ modules must have a CMakeLists.txt instead" )
|
|
||||||
set( _mod_testing OFF )
|
|
||||||
elseif ( MODULE_INTERFACE MATCHES "process" )
|
|
||||||
set( _mod_enabled ON )
|
|
||||||
set( _mod_reason "" )
|
|
||||||
set( _mod_testing OFF )
|
|
||||||
else()
|
|
||||||
set( _mod_enabled OFF )
|
|
||||||
set( _mod_reason "Unknown module interface '${MODULE_INTERFACE}'" )
|
|
||||||
set( _mod_testing OFF )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if ( _mod_enabled )
|
|
||||||
# We glob all the files inside the subdirectory, and we make sure they are
|
|
||||||
# synced with the bindir structure and installed.
|
|
||||||
file( GLOB MODULE_FILES RELATIVE ${_mod_dir} "${SUBDIRECTORY}/*" )
|
|
||||||
foreach( MODULE_FILE ${MODULE_FILES} )
|
|
||||||
if( NOT IS_DIRECTORY ${_mod_dir}/${MODULE_FILE} )
|
|
||||||
configure_file( ${SUBDIRECTORY}/${MODULE_FILE} ${SUBDIRECTORY}/${MODULE_FILE} COPYONLY )
|
|
||||||
|
|
||||||
get_filename_component( FLEXT ${MODULE_FILE} EXT )
|
|
||||||
if( "${FLEXT}" STREQUAL ".conf" )
|
|
||||||
if( INSTALL_CONFIG )
|
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
|
||||||
DESTINATION ${MODULE_DATA_DESTINATION} )
|
|
||||||
endif()
|
|
||||||
list( APPEND MODULE_CONFIG_FILES ${MODULE_FILE} )
|
|
||||||
else()
|
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
|
||||||
DESTINATION ${MODULE_DESTINATION} )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
|
||||||
message( " ${Green}TYPE:${ColorReset} jobmodule" )
|
|
||||||
message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" )
|
|
||||||
if( MODULE_CONFIG_FILES )
|
|
||||||
if ( INSTALL_CONFIG )
|
|
||||||
set( _destination "${MODULE_DATA_DESTINATION}" )
|
|
||||||
else()
|
|
||||||
set( _destination "[Build directory only]" )
|
|
||||||
endif()
|
|
||||||
message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${_destination}" )
|
|
||||||
endif()
|
|
||||||
message( "" )
|
|
||||||
# We copy over the lang directory, if any
|
|
||||||
if( IS_DIRECTORY "${_mod_dir}/lang" )
|
|
||||||
install_calamares_gettext_translations(
|
|
||||||
${SUBDIRECTORY}
|
|
||||||
SOURCE_DIR "${_mod_dir}/lang"
|
|
||||||
FILENAME ${SUBDIRECTORY}.mo
|
|
||||||
RENAME calamares-${SUBDIRECTORY}.mo
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# Module disabled due to missing dependencies / unsupported interface
|
|
||||||
set( SKIPPED_MODULES "${SUBDIRECTORY} (${_mod_reason})" PARENT_SCOPE )
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt or module.desc." )
|
|
||||||
message( "" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Check any config files for basic correctness
|
|
||||||
if ( BUILD_TESTING AND MODULE_CONFIG_FILES )
|
|
||||||
set( _count 0 )
|
|
||||||
foreach( _config_file ${MODULE_CONFIG_FILES} )
|
|
||||||
set( _count_str "-${_count}" )
|
|
||||||
if ( _count EQUAL 0 )
|
|
||||||
set( _count_str "" )
|
|
||||||
endif()
|
|
||||||
add_test(
|
|
||||||
NAME config-${SUBDIRECTORY}${_count_str}
|
|
||||||
COMMAND test_conf ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${_config_file} )
|
|
||||||
math( EXPR _count "${_count} + 1" )
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# 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
|
|
||||||
# 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 )
|
|
||||||
add_test(
|
|
||||||
NAME load-${SUBDIRECTORY}
|
|
||||||
COMMAND loadmodule ${SUBDIRECTORY}
|
|
||||||
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()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
@@ -1,199 +0,0 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Convenience function for creating a C++ (qtplugin) module for Calamares.
|
|
||||||
# This function provides cmake-time feedback about the plugin, adds
|
|
||||||
# targets for compilation and boilerplate information, and creates
|
|
||||||
# a module.desc with standard values (if the module.desc file exists,
|
|
||||||
# that one is used instead, which happens only for unusual plugins).
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
#
|
|
||||||
# calamares_add_plugin(
|
|
||||||
# module-name
|
|
||||||
# TYPE <view|job>
|
|
||||||
# EXPORT_MACRO macro-name
|
|
||||||
# SOURCES source-file...
|
|
||||||
# UI ui-file...
|
|
||||||
# LINK_LIBRARIES lib...
|
|
||||||
# LINK_PRIVATE_LIBRARIES lib...
|
|
||||||
# [COMPILE_DEFINITIONS def...]
|
|
||||||
# [RESOURCES resource-file]
|
|
||||||
# [REQUIRES module-name...]
|
|
||||||
# [NO_INSTALL]
|
|
||||||
# [NO_CONFIG]
|
|
||||||
# [SHARED_LIB]
|
|
||||||
# [EMERGENCY]
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# Function parameters:
|
|
||||||
# - COMPILE_DEFINITIONS
|
|
||||||
# Definitions are set on the resulting module with a suitable
|
|
||||||
# flag (i.e. `-D`) so only state the name (optionally, also the value)
|
|
||||||
# without a `-D` prefixed to it.
|
|
||||||
# - RESOURCES
|
|
||||||
# One (single!) filename for the RCC file for the plugin.
|
|
||||||
# - REQUIRES
|
|
||||||
# One or more names of modules which are added to the *requiredModules*
|
|
||||||
# key in the descriptor. See *Module Requirements* in the module
|
|
||||||
# documentation.
|
|
||||||
# - NO_INSTALL
|
|
||||||
# If this is set, the module is not installed by default; use this to
|
|
||||||
# build testing modules or unit-testing modules.
|
|
||||||
# - SHARED_LIB
|
|
||||||
# In unusual circumstances, this function is used to add a library
|
|
||||||
# rather than a normal Calamares module / plugin.
|
|
||||||
# - EMERGENCY
|
|
||||||
# If this is set, the module is marked as an *emergency* module in the
|
|
||||||
# descriptor. See *Emergency Modules* in the module documentation.
|
|
||||||
#
|
|
||||||
|
|
||||||
include( CMakeParseArguments )
|
|
||||||
include( CalamaresAddLibrary )
|
|
||||||
include( CMakeColors )
|
|
||||||
|
|
||||||
function( calamares_add_plugin )
|
|
||||||
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
|
||||||
set( NAME ${ARGV0} )
|
|
||||||
set( options NO_CONFIG NO_INSTALL SHARED_LIB EMERGENCY )
|
|
||||||
set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES )
|
|
||||||
set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS REQUIRES )
|
|
||||||
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
|
||||||
set( PLUGIN_NAME ${NAME} )
|
|
||||||
set( PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME} )
|
|
||||||
set( PLUGIN_DESC_FILE module.desc )
|
|
||||||
file( GLOB PLUGIN_CONFIG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.conf" )
|
|
||||||
set( PLUGIN_DATA_DESTINATION share/calamares/modules )
|
|
||||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
|
||||||
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
|
||||||
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
|
||||||
|
|
||||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}" )
|
|
||||||
message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" )
|
|
||||||
message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" )
|
|
||||||
message( " ${Green}LINK_PRIVATE_LIBRARIES:${ColorReset} ${PLUGIN_LINK_PRIVATE_LIBRARIES}" )
|
|
||||||
message( " ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}" )
|
|
||||||
if( PLUGIN_CONFIG_FILES )
|
|
||||||
if( PLUGIN_NO_CONFIG )
|
|
||||||
message( FATAL_ERROR "${Red}NO_CONFIG${ColorReset} is set, with configuration ${Red}${PLUGIN_CONFIG_FILES}${ColorReset}" )
|
|
||||||
endif()
|
|
||||||
set( _destination "(unknown)" )
|
|
||||||
if ( INSTALL_CONFIG AND NOT PLUGIN_NO_INSTALL )
|
|
||||||
set( _destination "${PLUGIN_DATA_DESTINATION}" )
|
|
||||||
elseif( NOT PLUGIN_NO_INSTALL )
|
|
||||||
# Not INSTALL_CONFIG
|
|
||||||
set( _destination "[Build directory only]" )
|
|
||||||
else()
|
|
||||||
set( _destination "[Skipping installation]" )
|
|
||||||
endif()
|
|
||||||
message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${_destination}" )
|
|
||||||
else()
|
|
||||||
if( NOT PLUGIN_NO_CONFIG )
|
|
||||||
message( " ${Red}NO_CONFIG${ColorReset} should be set." )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
if( PLUGIN_RESOURCES )
|
|
||||||
message( " ${Green}RESOURCES:${ColorReset} ${PLUGIN_RESOURCES}" )
|
|
||||||
endif()
|
|
||||||
message( "" )
|
|
||||||
|
|
||||||
# create target name once for convenience
|
|
||||||
set( target "calamares_${PLUGIN_TYPE}_${PLUGIN_NAME}" )
|
|
||||||
|
|
||||||
# determine target type
|
|
||||||
if( NOT ${PLUGIN_SHARED_LIB} )
|
|
||||||
set( target_type "MODULE" )
|
|
||||||
else()
|
|
||||||
set( target_type "SHARED" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set( calamares_add_library_args
|
|
||||||
"${target}"
|
|
||||||
"EXPORT_MACRO" "${PLUGIN_EXPORT_MACRO}"
|
|
||||||
"TARGET_TYPE" "${target_type}"
|
|
||||||
"SOURCES" "${PLUGIN_SOURCES}"
|
|
||||||
)
|
|
||||||
|
|
||||||
if( PLUGIN_UI )
|
|
||||||
list( APPEND calamares_add_library_args "UI" "${PLUGIN_UI}" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if( PLUGIN_LINK_LIBRARIES )
|
|
||||||
list( APPEND calamares_add_library_args "LINK_LIBRARIES" "${PLUGIN_LINK_LIBRARIES}" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if( PLUGIN_LINK_PRIVATE_LIBRARIES )
|
|
||||||
list( APPEND calamares_add_library_args "LINK_PRIVATE_LIBRARIES" "${PLUGIN_LINK_PRIVATE_LIBRARIES}" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if( PLUGIN_COMPILE_DEFINITIONS )
|
|
||||||
list( APPEND calamares_add_library_args "COMPILE_DEFINITIONS" ${PLUGIN_COMPILE_DEFINITIONS} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if ( PLUGIN_NO_INSTALL )
|
|
||||||
list( APPEND calamares_add_library_args "NO_INSTALL" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list( APPEND calamares_add_library_args
|
|
||||||
"NO_VERSION"
|
|
||||||
"INSTALL_BINDIR" "${PLUGIN_DESTINATION}"
|
|
||||||
)
|
|
||||||
|
|
||||||
if( PLUGIN_RESOURCES )
|
|
||||||
list( APPEND calamares_add_library_args "RESOURCES" "${PLUGIN_RESOURCES}" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
calamares_add_library( ${calamares_add_library_args} )
|
|
||||||
|
|
||||||
if ( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_DESC_FILE} )
|
|
||||||
configure_file( ${PLUGIN_DESC_FILE} ${PLUGIN_DESC_FILE} COPYONLY )
|
|
||||||
else()
|
|
||||||
set( _file ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE} )
|
|
||||||
set( _type ${PLUGIN_TYPE} )
|
|
||||||
file( WRITE ${_file} "# AUTO-GENERATED metadata file\n# Syntax is YAML 1.2\n---\n" )
|
|
||||||
file( APPEND ${_file} "type: \"${_type}\"\nname: \"${PLUGIN_NAME}\"\ninterface: \"qtplugin\"\nload: \"lib${target}.so\"\n" )
|
|
||||||
if ( PLUGIN_REQUIRES )
|
|
||||||
file( APPEND ${_file} "requiredModules:\n" )
|
|
||||||
foreach( _r ${PLUGIN_REQUIRES} )
|
|
||||||
file( APPEND ${_file} " - ${_r}\n" )
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
if ( PLUGIN_EMERGENCY )
|
|
||||||
file( APPEND ${_file} "emergency: true\n" )
|
|
||||||
endif()
|
|
||||||
if ( PLUGIN_NO_CONFIG )
|
|
||||||
file( APPEND ${_file} "noconfig: true\n" )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if ( NOT PLUGIN_NO_INSTALL )
|
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE}
|
|
||||||
DESTINATION ${PLUGIN_DESTINATION} )
|
|
||||||
|
|
||||||
foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} )
|
|
||||||
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
|
||||||
if ( INSTALL_CONFIG )
|
|
||||||
install(
|
|
||||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
|
||||||
DESTINATION ${PLUGIN_DATA_DESTINATION} )
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
@@ -1,58 +0,0 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Support functions for building Calamares tests.
|
|
||||||
# This extends KDE's ECM tests with some custom patterns.
|
|
||||||
#
|
|
||||||
# calamares_add_test(
|
|
||||||
# <NAME>
|
|
||||||
# [GUI]
|
|
||||||
# SOURCES <FILE..>
|
|
||||||
# )
|
|
||||||
|
|
||||||
include( CMakeParseArguments )
|
|
||||||
include( CalamaresAutomoc )
|
|
||||||
|
|
||||||
function( calamares_add_test )
|
|
||||||
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
|
||||||
set( NAME ${ARGV0} )
|
|
||||||
set( options GUI )
|
|
||||||
set( multiValueArgs SOURCES LIBRARIES DEFINITIONS )
|
|
||||||
cmake_parse_arguments( TEST "${options}" "" "${multiValueArgs}" ${ARGN} )
|
|
||||||
set( TEST_NAME ${NAME} )
|
|
||||||
|
|
||||||
if( ECM_FOUND AND BUILD_TESTING )
|
|
||||||
ecm_add_test(
|
|
||||||
${TEST_SOURCES}
|
|
||||||
TEST_NAME
|
|
||||||
${TEST_NAME}
|
|
||||||
LINK_LIBRARIES
|
|
||||||
calamares
|
|
||||||
${TEST_LIBRARIES}
|
|
||||||
Qt5::Core
|
|
||||||
Qt5::Test
|
|
||||||
)
|
|
||||||
calamares_automoc( ${TEST_NAME} )
|
|
||||||
target_compile_definitions( ${TEST_NAME} PRIVATE -DBUILD_AS_TEST="${CMAKE_CURRENT_SOURCE_DIR}" ${TEST_DEFINITIONS} )
|
|
||||||
if( TEST_GUI )
|
|
||||||
target_link_libraries( ${TEST_NAME} calamaresui Qt5::Gui )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
@@ -1,181 +0,0 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# This file has not yet been documented for use outside of Calamares itself.
|
|
||||||
|
|
||||||
include( CMakeParseArguments )
|
|
||||||
|
|
||||||
if( NOT _rcc_version_support_checked )
|
|
||||||
set( _rcc_version_support_checked TRUE )
|
|
||||||
|
|
||||||
# Extract the executable name
|
|
||||||
get_property( _rcc_executable
|
|
||||||
TARGET ${Qt5Core_RCC_EXECUTABLE}
|
|
||||||
PROPERTY IMPORTED_LOCATION
|
|
||||||
)
|
|
||||||
if( NOT _rcc_executable )
|
|
||||||
# Weird, probably now uses Qt5::rcc which is wrong too
|
|
||||||
set( _rcc_executable ${Qt5Core_RCC_EXECUTABLE} )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Try an empty RCC file with explicit format-version
|
|
||||||
execute_process(
|
|
||||||
COMMAND echo "<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
|
|
||||||
# gettext data into the appropriate system directory. Allows renaming the
|
|
||||||
# .mo files during install to avoid namespace clashes.
|
|
||||||
#
|
|
||||||
# install_calamares_gettext_translations(
|
|
||||||
# NAME <name of module, for human use>
|
|
||||||
# SOURCE_DIR path/to/lang
|
|
||||||
# FILENAME <name of file.mo>
|
|
||||||
# [RENAME <new-name of.mo>]
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# For all of the (global) translation languages enabled for Calamares,
|
|
||||||
# try installing $SOURCE_DIR/$lang/LC_MESSAGES/<filename>.mo into the
|
|
||||||
# system gettext data directory (e.g. share/locale/), possibly renaming
|
|
||||||
# filename.mo to renamed.mo in the process.
|
|
||||||
function( install_calamares_gettext_translations )
|
|
||||||
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
|
||||||
set( NAME ${ARGV0} )
|
|
||||||
set( oneValueArgs NAME SOURCE_DIR FILENAME RENAME )
|
|
||||||
cmake_parse_arguments( TRANSLATION "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
|
||||||
|
|
||||||
if( NOT TRANSLATION_NAME )
|
|
||||||
set( TRANSLATION_NAME ${NAME} )
|
|
||||||
endif()
|
|
||||||
if( NOT TRANSLATION_FILENAME )
|
|
||||||
set( TRANSLATION_FILENAME "${TRANSLATION_NAME}.mo" )
|
|
||||||
endif()
|
|
||||||
if( NOT TRANSLATION_RENAME )
|
|
||||||
set( TRANSLATION_RENAME "${TRANSLATION_FILENAME}" )
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "Installing gettext translations for ${TRANSLATION_NAME}")
|
|
||||||
message(STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}")
|
|
||||||
|
|
||||||
set( TRANSLATION_NAME "${NAME}" )
|
|
||||||
set( INSTALLED_TRANSLATIONS "" )
|
|
||||||
foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) # Global
|
|
||||||
set( lang_mo "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_FILENAME}" )
|
|
||||||
if( lang STREQUAL "en" )
|
|
||||||
message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" )
|
|
||||||
else( EXISTS ${lang_mo} )
|
|
||||||
list( APPEND INSTALLED_LANGUAGES "${lang}" )
|
|
||||||
install(
|
|
||||||
FILES ${lang_mo}
|
|
||||||
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()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
@@ -1,47 +0,0 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Helper function for doing automoc on a target, and autoui on a .ui file.
|
|
||||||
#
|
|
||||||
# Sets AUTOMOC TRUE for a target.
|
|
||||||
#
|
|
||||||
# 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
|
|
||||||
# libcalamares/utils/moc-warnings.h file to the moc, which in turn
|
|
||||||
# reduces compiler warnings in generated MOC code.
|
|
||||||
#
|
|
||||||
# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that
|
|
||||||
# to the options passed to uic.
|
|
||||||
|
|
||||||
function(calamares_automoc TARGET)
|
|
||||||
set_target_properties( ${TARGET} PROPERTIES AUTOMOC TRUE )
|
|
||||||
if ( CALAMARES_AUTOMOC_OPTIONS )
|
|
||||||
set_target_properties( ${TARGET} PROPERTIES AUTOMOC_MOC_OPTIONS "${CALAMARES_AUTOMOC_OPTIONS}" )
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(calamares_autouic TARGET)
|
|
||||||
set_target_properties( ${TARGET} PROPERTIES AUTOUIC TRUE )
|
|
||||||
if ( CALAMARES_AUTOUIC_OPTIONS )
|
|
||||||
foreach(S ${ARGN})
|
|
||||||
set_property(SOURCE ${S} PROPERTY AUTOUIC_OPTIONS "${CALAMARES_AUTOUIC_OPTIONS}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
@@ -1,34 +0,0 @@
|
|||||||
# - Find libcrypt
|
|
||||||
# Find the libcrypt includes and the libcrypt libraries
|
|
||||||
# This module defines
|
|
||||||
# LIBCRYPT_INCLUDE_DIR, root crypt include dir. Include crypt with crypt.h
|
|
||||||
# LIBCRYPT_LIBRARY, the path to libcrypt
|
|
||||||
# LIBCRYPT_FOUND, whether libcrypt was found
|
|
||||||
|
|
||||||
if( CMAKE_SYSTEM MATCHES "FreeBSD" )
|
|
||||||
# FreeBSD has crypt(3) declared in unistd.h, which lives in
|
|
||||||
# libc; the libcrypt found here is not used.
|
|
||||||
find_path( CRYPT_INCLUDE_DIR NAMES unistd.h )
|
|
||||||
add_definitions( -DNO_CRYPT_H )
|
|
||||||
else()
|
|
||||||
find_path( CRYPT_INCLUDE_DIR
|
|
||||||
NAMES crypt.h
|
|
||||||
HINTS
|
|
||||||
${CMAKE_INSTALL_INCLUDEDIR}
|
|
||||||
NO_CACHE
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library( CRYPT_LIBRARIES
|
|
||||||
NAMES crypt
|
|
||||||
HINTS
|
|
||||||
${CMAKE_INSTALL_LIBDIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
include( FindPackageHandleStandardArgs )
|
|
||||||
find_package_handle_standard_args(
|
|
||||||
Crypt
|
|
||||||
REQUIRED_VARS CRYPT_LIBRARIES CRYPT_INCLUDE_DIR
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced( CRYPT_INCLUDE_DIR CRYPT_LIBRARIES )
|
|
@@ -1,37 +0,0 @@
|
|||||||
# Locate libpwquality
|
|
||||||
# https://github.com/libpwquality/libpwquality
|
|
||||||
#
|
|
||||||
# This module defines
|
|
||||||
# LibPWQuality_FOUND
|
|
||||||
# LibPWQuality_LIBRARIES, where to find the library
|
|
||||||
# LibPWQuality_INCLUDE_DIRS, where to find pwquality.h
|
|
||||||
#
|
|
||||||
include(FindPkgConfig)
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
pkg_search_module(pc_pwquality QUIET pwquality)
|
|
||||||
|
|
||||||
find_path(LibPWQuality_INCLUDE_DIR
|
|
||||||
NAMES pwquality.h
|
|
||||||
PATHS ${pc_pwquality_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
find_library(LibPWQuality_LIBRARY
|
|
||||||
NAMES pwquality
|
|
||||||
PATHS ${pc_pwquality_LIBRARY_DIRS}
|
|
||||||
)
|
|
||||||
if(pc_pwquality_FOUND)
|
|
||||||
set(LibPWQuality_LIBRARIES ${LibPWQuality_LIBRARY})
|
|
||||||
set(LibPWQuality_INCLUDE_DIRS ${LibPWQuality_INCLUDE_DIR} ${pc_pwquality_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package_handle_standard_args(LibPWQuality DEFAULT_MSG
|
|
||||||
LibPWQuality_INCLUDE_DIRS
|
|
||||||
LibPWQuality_LIBRARIES
|
|
||||||
)
|
|
||||||
mark_as_advanced(LibPWQuality_INCLUDE_DIRS LibPWQuality_LIBRARIES)
|
|
||||||
|
|
||||||
set_package_properties(
|
|
||||||
LibPWQuality PROPERTIES
|
|
||||||
DESCRIPTION "Password quality checking library"
|
|
||||||
URL "https://github.com/libpwquality/libpwquality"
|
|
||||||
)
|
|
@@ -1,177 +0,0 @@
|
|||||||
# Find PythonQt
|
|
||||||
#
|
|
||||||
# Sets PYTHONQT_FOUND, PYTHONQT_INCLUDE_DIR, PYTHONQT_LIBRARY, PYTHONQT_LIBRARIES
|
|
||||||
#
|
|
||||||
# Also sets PYTHONQT_INCLUDE_DIRS to add whatever directories
|
|
||||||
# that are needed for extensions.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Python is required
|
|
||||||
find_package(PythonLibs)
|
|
||||||
if(NOT PYTHONLIBS_FOUND)
|
|
||||||
message(FATAL_ERROR "error: Python is required to build PythonQt")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Cut X.Y[.Z] down to just X.Y
|
|
||||||
string(REGEX REPLACE
|
|
||||||
"^([0-9][0-9]*)\.([0-9][0-9]*)"
|
|
||||||
"\\1.\\2@"
|
|
||||||
_PYTHONLIBS_MAJMIN
|
|
||||||
${PYTHONLIBS_VERSION_STRING}
|
|
||||||
)
|
|
||||||
string(REGEX REPLACE
|
|
||||||
"@.*"
|
|
||||||
""
|
|
||||||
PYTHONLIBS_MAJMIN
|
|
||||||
${_PYTHONLIBS_MAJMIN}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT EXISTS "${PYTHONQT_INSTALL_DIR}")
|
|
||||||
find_path(PYTHONQT_INSTALL_DIR
|
|
||||||
NAMES
|
|
||||||
include/PythonQt/PythonQt.h
|
|
||||||
include/PythonQt5/PythonQt.h
|
|
||||||
DOC "Directory where PythonQt was installed.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# XXX Since PythonQt 3.0 is not yet cmakeified, depending
|
|
||||||
# on how PythonQt is built, headers will not always be
|
|
||||||
# installed in "include/PythonQt". That is why "src"
|
|
||||||
# is added as an option. See [1] for more details.
|
|
||||||
# [1] https://github.com/commontk/CTK/pull/538#issuecomment-86106367
|
|
||||||
find_path(PYTHONQT_INCLUDE_DIR PythonQt.h
|
|
||||||
PATHS
|
|
||||||
"${PYTHONQT_INSTALL_DIR}/include/PythonQt"
|
|
||||||
"${PYTHONQT_INSTALL_DIR}/include/PythonQt5"
|
|
||||||
"${PYTHONQT_INSTALL_DIR}/src"
|
|
||||||
DOC "Path to the PythonQt include directory")
|
|
||||||
find_path(PYTHONQT_ALL_INCLUDE_DIR PythonQt_QtAll.h
|
|
||||||
PATHS
|
|
||||||
"${PYTHONQT_INCLUDE_DIR}"
|
|
||||||
"${PYTHONQT_INSTALL_DIR}"
|
|
||||||
PATH_SUFFIXES
|
|
||||||
"extensions/PythonQt_QtAll"
|
|
||||||
"src"
|
|
||||||
DOC "Path to the PythonQt 'all' header")
|
|
||||||
|
|
||||||
if ( NOT PythonQt_FIND_QUIETLY )
|
|
||||||
message( STATUS "Searching for PythonQt (PythonLibs ${PYTHONLIBS_MAJMIN}) .." )
|
|
||||||
if ( PYTHONQT_INCLUDE_DIR )
|
|
||||||
message( STATUS " .. found include ${PYTHONQT_INCLUDE_DIR}" )
|
|
||||||
message( STATUS " .. found all include ${PYTHONQT_ALL_INCLUDE_DIR}" )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Minimum v3.1 is needed
|
|
||||||
find_library(PYTHONQT_LIBRARY_RELEASE
|
|
||||||
NAMES
|
|
||||||
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}
|
|
||||||
PythonQt-Qt5-Python3
|
|
||||||
PythonQt
|
|
||||||
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
|
|
||||||
DOC "The PythonQt library."
|
|
||||||
)
|
|
||||||
find_library(PYTHONQT_LIBRARY_DEBUG
|
|
||||||
NAMES
|
|
||||||
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}JMIN${CTK_CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}${CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}
|
|
||||||
PythonQt-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt-Qt5-Python3${CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt-Qt5-Python3
|
|
||||||
PythonQt${CTK_CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt${CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt
|
|
||||||
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
|
|
||||||
DOC "The PythonQt library (debug build)."
|
|
||||||
)
|
|
||||||
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE
|
|
||||||
NAMES
|
|
||||||
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}
|
|
||||||
PythonQt_QtAll-Qt5-Python3
|
|
||||||
PythonQt_QtAll
|
|
||||||
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
|
|
||||||
DOC "Full Qt bindings for the PythonQt library."
|
|
||||||
)
|
|
||||||
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG
|
|
||||||
NAMES
|
|
||||||
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}${CTK_CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}${CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}
|
|
||||||
PythonQt_QtAll-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt_QtAll-Qt5-Python3${CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt_QtAll-Qt5-Python3
|
|
||||||
PythonQt_QtAll${CTK_CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt_QtAll${CMAKE_DEBUG_POSTFIX}
|
|
||||||
PythonQt_QtAll
|
|
||||||
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
|
|
||||||
DOC "Full Qt bindings for the PythonQt library (debug build)."
|
|
||||||
)
|
|
||||||
|
|
||||||
set(PYTHONQT_LIBRARY)
|
|
||||||
if(PYTHONQT_LIBRARY_RELEASE)
|
|
||||||
list(APPEND PYTHONQT_LIBRARY optimized ${PYTHONQT_LIBRARY_RELEASE})
|
|
||||||
endif()
|
|
||||||
if(PYTHONQT_LIBRARY_DEBUG)
|
|
||||||
list(APPEND PYTHONQT_LIBRARY debug ${PYTHONQT_LIBRARY_DEBUG})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(PYTHONQT_QTALL_LIBRARY)
|
|
||||||
if(PYTHONQT_QTALL_LIBRARY_RELEASE)
|
|
||||||
list(APPEND PYTHONQT_QTALL_LIBRARY optimized ${PYTHONQT_QTALL_LIBRARY_RELEASE})
|
|
||||||
endif()
|
|
||||||
if(PYTHONQT_QTALL_LIBRARY_DEBUG)
|
|
||||||
list(APPEND PYTHONQT_QTALL_LIBRARY debug ${PYTHONQT_QTALL_LIBRARY_DEBUG})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if ( NOT PythonQt_FIND_QUIETLY )
|
|
||||||
if ( PYTHONQT_LIBRARY )
|
|
||||||
message( STATUS " .. found library ${PYTHONQT_LIBRARY}" )
|
|
||||||
endif()
|
|
||||||
if ( PYTHONQT_QTALL_LIBRARY )
|
|
||||||
message( STATUS " .. found qtall ${PYTHONQT_QTALL_LIBRARY}" )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
mark_as_advanced(PYTHONQT_INSTALL_DIR)
|
|
||||||
mark_as_advanced(PYTHONQT_INCLUDE_DIR)
|
|
||||||
mark_as_advanced(PYTHONQT_LIBRARY_RELEASE)
|
|
||||||
mark_as_advanced(PYTHONQT_LIBRARY_DEBUG)
|
|
||||||
mark_as_advanced(PYTHONQT_QTALL_LIBRARY_RELEASE)
|
|
||||||
mark_as_advanced(PYTHONQT_QTALL_LIBRARY_DEBUG)
|
|
||||||
|
|
||||||
# On linux, also find libutil
|
|
||||||
if(UNIX AND NOT APPLE)
|
|
||||||
find_library(PYTHONQT_LIBUTIL util)
|
|
||||||
mark_as_advanced(PYTHONQT_LIBUTIL)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# All upper case _FOUND variable is maintained for backwards compatibility.
|
|
||||||
set(PYTHONQT_FOUND 0)
|
|
||||||
set(PythonQt_FOUND 0)
|
|
||||||
|
|
||||||
if(PYTHONQT_INCLUDE_DIR AND PYTHONQT_LIBRARY AND PYTHONQT_QTALL_LIBRARY)
|
|
||||||
# Currently CMake'ified PythonQt only supports building against a python Release build.
|
|
||||||
# This applies independently of CTK build type (Release, Debug, ...)
|
|
||||||
add_definitions(-DPYTHONQT_USE_RELEASE_PYTHON_FALLBACK)
|
|
||||||
set(PYTHONQT_FOUND 1)
|
|
||||||
set(PythonQt_FOUND ${PYTHONQT_FOUND})
|
|
||||||
set(PYTHONQT_LIBRARIES ${PYTHONQT_LIBRARY} ${PYTHONQT_LIBUTIL} ${PYTHONQT_QTALL_LIBRARY})
|
|
||||||
set(PYTHONQT_INCLUDE_DIRS ${PYTHONQT_INCLUDE_DIR})
|
|
||||||
if(PYTHONQT_ALL_INCLUDE_DIR)
|
|
||||||
list(APPEND PYTHONQT_INCLUDE_DIRS ${PYTHONQT_ALL_INCLUDE_DIR})
|
|
||||||
endif()
|
|
||||||
elseif(NOT PythonQt_FIND_QUIETLY)
|
|
||||||
set(_missing "")
|
|
||||||
if (NOT PYTHONQT_INCLUDE_DIR)
|
|
||||||
list(APPEND _missing "includes")
|
|
||||||
endif()
|
|
||||||
if (NOT PYTHONQT_LIBRARY)
|
|
||||||
list(APPEND _missing "library")
|
|
||||||
endif()
|
|
||||||
if (NOT PYTHONQT_QTALL_LIBRARY)
|
|
||||||
list(APPEND _missing "qtall")
|
|
||||||
endif()
|
|
||||||
message(STATUS "PythonQt not found, missing components ${_missing}")
|
|
||||||
endif()
|
|
@@ -1,11 +1,9 @@
|
|||||||
# Locate yaml-cpp
|
# Locate yaml-cpp
|
||||||
#
|
#
|
||||||
# This module defines
|
# This module defines
|
||||||
# YAMLCPP_FOUND, if false, do not try to link to yaml-cpp
|
# YAMLCPP_FOUND, if false, do not try to link to yaml-cpp
|
||||||
# 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,
|
|
||||||
# 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 ...).
|
||||||
@@ -50,12 +48,3 @@ find_library(YAMLCPP_LIBRARY
|
|||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(YAMLCPP DEFAULT_MSG YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(YAMLCPP DEFAULT_MSG YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
||||||
mark_as_advanced(YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
mark_as_advanced(YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
||||||
|
|
||||||
# Add an imported target
|
|
||||||
if( YAMLCPP_LIBRARY )
|
|
||||||
add_library( yamlcpp UNKNOWN IMPORTED )
|
|
||||||
set_property( TARGET yamlcpp PROPERTY IMPORTED_LOCATION ${YAMLCPP_LIBRARY} )
|
|
||||||
if ( YAMLCPP_INCLUDE_DIR )
|
|
||||||
set_property( TARGET yamlcpp PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${YAMLCPP_INCLUDE_DIR} )
|
|
||||||
endif()
|
|
||||||
endif()
|
|
182
CMakeModules/GNUInstallDirs.cmake
Normal file
182
CMakeModules/GNUInstallDirs.cmake
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
# - Define GNU standard installation directories
|
||||||
|
# Provides install directory variables as defined for GNU software:
|
||||||
|
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
|
||||||
|
# Inclusion of this module defines the following variables:
|
||||||
|
# CMAKE_INSTALL_<dir> - destination for files of a given type
|
||||||
|
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
|
||||||
|
# where <dir> is one of:
|
||||||
|
# BINDIR - user executables (bin)
|
||||||
|
# SBINDIR - system admin executables (sbin)
|
||||||
|
# LIBEXECDIR - program executables (libexec)
|
||||||
|
# SYSCONFDIR - read-only single-machine data (etc)
|
||||||
|
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
|
||||||
|
# LOCALSTATEDIR - modifiable single-machine data (var)
|
||||||
|
# LIBDIR - object code libraries (lib or lib64)
|
||||||
|
# INCLUDEDIR - C header files (include)
|
||||||
|
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
|
||||||
|
# DATAROOTDIR - read-only architecture-independent data root (share)
|
||||||
|
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
|
||||||
|
# INFODIR - info documentation (DATAROOTDIR/info)
|
||||||
|
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
|
||||||
|
# MANDIR - man documentation (DATAROOTDIR/man)
|
||||||
|
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
|
||||||
|
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
|
||||||
|
# install() commands for the corresponding file type. If the includer does
|
||||||
|
# not define a value the above-shown default will be used and the value will
|
||||||
|
# appear in the cache for editing by the user.
|
||||||
|
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
|
||||||
|
# from the corresponding destination by prepending (if necessary) the value
|
||||||
|
# of CMAKE_INSTALL_PREFIX.
|
||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
|
||||||
|
# Copyright 2011 Kitware, Inc.
|
||||||
|
#
|
||||||
|
# Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
# see accompanying file Copyright.txt for details.
|
||||||
|
#
|
||||||
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
# See the License for more information.
|
||||||
|
#=============================================================================
|
||||||
|
# (To distribute this file outside of CMake, substitute the full
|
||||||
|
# License text for the above reference.)
|
||||||
|
|
||||||
|
# Installation directories
|
||||||
|
#
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
|
||||||
|
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
|
||||||
|
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
|
||||||
|
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
|
||||||
|
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
|
||||||
|
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
|
||||||
|
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
|
||||||
|
set(_LIBDIR_DEFAULT "lib")
|
||||||
|
# Override this default 'lib' with 'lib64' iff:
|
||||||
|
# - we are on Linux system but NOT cross-compiling
|
||||||
|
# - we are NOT on debian
|
||||||
|
# - we are on a 64 bits system
|
||||||
|
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
|
||||||
|
# Note that the future of multi-arch handling may be even
|
||||||
|
# more complicated than that: http://wiki.debian.org/Multiarch
|
||||||
|
if(CMAKE_SYSTEM_NAME MATCHES "Linux"
|
||||||
|
AND NOT CMAKE_CROSSCOMPILING
|
||||||
|
AND NOT EXISTS "/etc/debian_version")
|
||||||
|
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
|
||||||
|
message(AUTHOR_WARNING
|
||||||
|
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
|
||||||
|
"Please enable at least one language before including GNUInstallDirs.")
|
||||||
|
else()
|
||||||
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
||||||
|
set(_LIBDIR_DEFAULT "lib64")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
|
||||||
|
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
|
||||||
|
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
|
||||||
|
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
|
||||||
|
# the cache and store the defaults in local variables if the cache values are
|
||||||
|
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_DATADIR)
|
||||||
|
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
|
||||||
|
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_INFODIR)
|
||||||
|
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
|
||||||
|
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_LOCALEDIR)
|
||||||
|
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
|
||||||
|
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_MANDIR)
|
||||||
|
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
|
||||||
|
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_INSTALL_DOCDIR)
|
||||||
|
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
|
||||||
|
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
CMAKE_INSTALL_BINDIR
|
||||||
|
CMAKE_INSTALL_SBINDIR
|
||||||
|
CMAKE_INSTALL_LIBEXECDIR
|
||||||
|
CMAKE_INSTALL_SYSCONFDIR
|
||||||
|
CMAKE_INSTALL_SHAREDSTATEDIR
|
||||||
|
CMAKE_INSTALL_LOCALSTATEDIR
|
||||||
|
CMAKE_INSTALL_LIBDIR
|
||||||
|
CMAKE_INSTALL_INCLUDEDIR
|
||||||
|
CMAKE_INSTALL_OLDINCLUDEDIR
|
||||||
|
CMAKE_INSTALL_DATAROOTDIR
|
||||||
|
CMAKE_INSTALL_DATADIR
|
||||||
|
CMAKE_INSTALL_INFODIR
|
||||||
|
CMAKE_INSTALL_LOCALEDIR
|
||||||
|
CMAKE_INSTALL_MANDIR
|
||||||
|
CMAKE_INSTALL_DOCDIR
|
||||||
|
)
|
||||||
|
|
||||||
|
# Result directories
|
||||||
|
#
|
||||||
|
foreach(dir
|
||||||
|
BINDIR
|
||||||
|
SBINDIR
|
||||||
|
LIBEXECDIR
|
||||||
|
SYSCONFDIR
|
||||||
|
SHAREDSTATEDIR
|
||||||
|
LOCALSTATEDIR
|
||||||
|
LIBDIR
|
||||||
|
INCLUDEDIR
|
||||||
|
OLDINCLUDEDIR
|
||||||
|
DATAROOTDIR
|
||||||
|
DATADIR
|
||||||
|
INFODIR
|
||||||
|
LOCALEDIR
|
||||||
|
MANDIR
|
||||||
|
DOCDIR
|
||||||
|
)
|
||||||
|
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
|
||||||
|
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
@@ -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 )
|
|
157
CMakeModules/MacroLogFeature.cmake
Normal file
157
CMakeModules/MacroLogFeature.cmake
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
# This file defines the Feature Logging macros.
|
||||||
|
#
|
||||||
|
# MACRO_LOG_FEATURE(VAR FEATURE DESCRIPTION URL [REQUIRED [MIN_VERSION [COMMENTS]]])
|
||||||
|
# Logs the information so that it can be displayed at the end
|
||||||
|
# of the configure run
|
||||||
|
# VAR : TRUE or FALSE, indicating whether the feature is supported
|
||||||
|
# FEATURE: name of the feature, e.g. "libjpeg"
|
||||||
|
# DESCRIPTION: description what this feature provides
|
||||||
|
# URL: home page
|
||||||
|
# REQUIRED: TRUE or FALSE, indicating whether the featue is required
|
||||||
|
# MIN_VERSION: minimum version number. empty string if unneeded
|
||||||
|
# COMMENTS: More info you may want to provide. empty string if unnecessary
|
||||||
|
#
|
||||||
|
# MACRO_DISPLAY_FEATURE_LOG()
|
||||||
|
# Call this to display the collected results.
|
||||||
|
# Exits CMake with a FATAL error message if a required feature is missing
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# INCLUDE(MacroLogFeature)
|
||||||
|
#
|
||||||
|
# FIND_PACKAGE(JPEG)
|
||||||
|
# MACRO_LOG_FEATURE(JPEG_FOUND "libjpeg" "Support JPEG images" "http://www.ijg.org" TRUE "3.2a" "")
|
||||||
|
# ...
|
||||||
|
# MACRO_DISPLAY_FEATURE_LOG()
|
||||||
|
|
||||||
|
# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
|
||||||
|
# Copyright (c) 2006, Allen Winter, <winter@kde.org>
|
||||||
|
# Copyright (c) 2009, Sebastian Trueg, <trueg@kde.org>
|
||||||
|
#
|
||||||
|
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||||
|
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||||
|
|
||||||
|
IF (NOT _macroLogFeatureAlreadyIncluded)
|
||||||
|
SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
|
||||||
|
IF (EXISTS ${_file})
|
||||||
|
FILE(REMOVE ${_file})
|
||||||
|
ENDIF (EXISTS ${_file})
|
||||||
|
|
||||||
|
SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
|
||||||
|
IF (EXISTS ${_file})
|
||||||
|
FILE(REMOVE ${_file})
|
||||||
|
ENDIF (EXISTS ${_file})
|
||||||
|
|
||||||
|
SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
|
||||||
|
IF (EXISTS ${_file})
|
||||||
|
FILE(REMOVE ${_file})
|
||||||
|
ENDIF (EXISTS ${_file})
|
||||||
|
|
||||||
|
SET(_macroLogFeatureAlreadyIncluded TRUE)
|
||||||
|
|
||||||
|
INCLUDE(FeatureSummary)
|
||||||
|
|
||||||
|
ENDIF (NOT _macroLogFeatureAlreadyIncluded)
|
||||||
|
|
||||||
|
|
||||||
|
MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _comments)
|
||||||
|
|
||||||
|
STRING(TOUPPER "${ARGV4}" _required)
|
||||||
|
SET(_minvers "${ARGV5}")
|
||||||
|
SET(_comments "${ARGV6}")
|
||||||
|
|
||||||
|
IF (${_var})
|
||||||
|
SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
|
||||||
|
ELSE (${_var})
|
||||||
|
IF ("${_required}" STREQUAL "TRUE")
|
||||||
|
SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
|
||||||
|
ELSE ("${_required}" STREQUAL "TRUE")
|
||||||
|
SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
|
||||||
|
ENDIF ("${_required}" STREQUAL "TRUE")
|
||||||
|
ENDIF (${_var})
|
||||||
|
|
||||||
|
SET(_logtext " * ${_package}")
|
||||||
|
|
||||||
|
IF (NOT ${_var})
|
||||||
|
IF (${_minvers} MATCHES ".*")
|
||||||
|
SET(_logtext "${_logtext} (${_minvers} or higher)")
|
||||||
|
ENDIF (${_minvers} MATCHES ".*")
|
||||||
|
SET(_logtext "${_logtext} <${_url}>\n ")
|
||||||
|
ELSE (NOT ${_var})
|
||||||
|
SET(_logtext "${_logtext} - ")
|
||||||
|
ENDIF (NOT ${_var})
|
||||||
|
|
||||||
|
SET(_logtext "${_logtext}${_description}")
|
||||||
|
|
||||||
|
IF (NOT ${_var})
|
||||||
|
IF (${_comments} MATCHES ".*")
|
||||||
|
SET(_logtext "${_logtext}\n ${_comments}")
|
||||||
|
ENDIF (${_comments} MATCHES ".*")
|
||||||
|
# SET(_logtext "${_logtext}\n") #double-space missing features?
|
||||||
|
ENDIF (NOT ${_var})
|
||||||
|
|
||||||
|
FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n")
|
||||||
|
|
||||||
|
IF(COMMAND SET_PACKAGE_INFO) # in FeatureSummary.cmake since CMake 2.8.3
|
||||||
|
SET_PACKAGE_INFO("${_package}" "\"${_description}\"" "${_url}" "\"${_comments}\"")
|
||||||
|
ENDIF(COMMAND SET_PACKAGE_INFO)
|
||||||
|
|
||||||
|
ENDMACRO(MACRO_LOG_FEATURE)
|
||||||
|
|
||||||
|
|
||||||
|
MACRO(MACRO_DISPLAY_FEATURE_LOG)
|
||||||
|
IF(COMMAND FEATURE_SUMMARY) # in FeatureSummary.cmake since CMake 2.8.3
|
||||||
|
FEATURE_SUMMARY(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/FindPackageLog.txt
|
||||||
|
WHAT ALL)
|
||||||
|
ENDIF(COMMAND FEATURE_SUMMARY)
|
||||||
|
|
||||||
|
SET(_missingFile ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
|
||||||
|
SET(_enabledFile ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
|
||||||
|
SET(_disabledFile ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
|
||||||
|
|
||||||
|
IF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile})
|
||||||
|
SET(_printSummary TRUE)
|
||||||
|
ENDIF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile})
|
||||||
|
|
||||||
|
IF(_printSummary)
|
||||||
|
SET(_missingDeps 0)
|
||||||
|
IF (EXISTS ${_enabledFile})
|
||||||
|
FILE(READ ${_enabledFile} _enabled)
|
||||||
|
FILE(REMOVE ${_enabledFile})
|
||||||
|
SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n-----------------------------------------------------------------------------\n${_enabled}")
|
||||||
|
ENDIF (EXISTS ${_enabledFile})
|
||||||
|
|
||||||
|
|
||||||
|
IF (EXISTS ${_disabledFile})
|
||||||
|
SET(_missingDeps 1)
|
||||||
|
FILE(READ ${_disabledFile} _disabled)
|
||||||
|
FILE(REMOVE ${_disabledFile})
|
||||||
|
SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n-----------------------------------------------------------------------------\n${_disabled}")
|
||||||
|
ENDIF (EXISTS ${_disabledFile})
|
||||||
|
|
||||||
|
|
||||||
|
IF (EXISTS ${_missingFile})
|
||||||
|
SET(_missingDeps 1)
|
||||||
|
FILE(READ ${_missingFile} _requirements)
|
||||||
|
SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- You must install these packages before continuing.\n-----------------------------------------------------------------------------\n${_requirements}")
|
||||||
|
FILE(REMOVE ${_missingFile})
|
||||||
|
SET(_haveMissingReq 1)
|
||||||
|
ENDIF (EXISTS ${_missingFile})
|
||||||
|
|
||||||
|
|
||||||
|
IF (NOT ${_missingDeps})
|
||||||
|
SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- Congratulations! All external packages have been found.")
|
||||||
|
ENDIF (NOT ${_missingDeps})
|
||||||
|
|
||||||
|
|
||||||
|
MESSAGE(${_summary})
|
||||||
|
MESSAGE("-----------------------------------------------------------------------------\n")
|
||||||
|
|
||||||
|
|
||||||
|
IF(_haveMissingReq)
|
||||||
|
MESSAGE(FATAL_ERROR "Exiting: Missing Requirements")
|
||||||
|
ENDIF(_haveMissingReq)
|
||||||
|
|
||||||
|
ENDIF(_printSummary)
|
||||||
|
|
||||||
|
ENDMACRO(MACRO_DISPLAY_FEATURE_LOG)
|
48
CMakeModules/MacroOptionalFindPackage.cmake
Normal file
48
CMakeModules/MacroOptionalFindPackage.cmake
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION()
|
||||||
|
# MACRO_OPTIONAL_FIND_PACKAGE( <name> [QUIT] )
|
||||||
|
# This macro is a combination of OPTION() and FIND_PACKAGE(), it
|
||||||
|
# works like FIND_PACKAGE(), but additionally it automatically creates
|
||||||
|
# an option name WITH_<name>, which can be disabled via the cmake GUI.
|
||||||
|
# or via -DWITH_<name>=OFF
|
||||||
|
# The standard <name>_FOUND variables can be used in the same way
|
||||||
|
# as when using the normal FIND_PACKAGE()
|
||||||
|
|
||||||
|
# Copyright (c) 2006-2010 Alexander Neundorf, <neundorf@kde.org>
|
||||||
|
#
|
||||||
|
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||||
|
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||||
|
|
||||||
|
# This is just a helper macro to set a bunch of variables empty.
|
||||||
|
# We don't know whether the package uses UPPERCASENAME or CamelCaseName, so we try both:
|
||||||
|
macro(_MOFP_SET_EMPTY_IF_DEFINED _name _var)
|
||||||
|
if(DEFINED ${_name}_${_var})
|
||||||
|
set(${_name}_${_var} "")
|
||||||
|
endif(DEFINED ${_name}_${_var})
|
||||||
|
|
||||||
|
string(TOUPPER ${_name} _nameUpper)
|
||||||
|
if(DEFINED ${_nameUpper}_${_var})
|
||||||
|
set(${_nameUpper}_${_var} "")
|
||||||
|
endif(DEFINED ${_nameUpper}_${_var})
|
||||||
|
endmacro(_MOFP_SET_EMPTY_IF_DEFINED _package _var)
|
||||||
|
|
||||||
|
|
||||||
|
macro (MACRO_OPTIONAL_FIND_PACKAGE _name )
|
||||||
|
option(WITH_${_name} "Search for ${_name} package" ON)
|
||||||
|
if (WITH_${_name})
|
||||||
|
find_package(${_name} ${ARGN})
|
||||||
|
else (WITH_${_name})
|
||||||
|
string(TOUPPER ${_name} _nameUpper)
|
||||||
|
set(${_name}_FOUND FALSE)
|
||||||
|
set(${_nameUpper}_FOUND FALSE)
|
||||||
|
|
||||||
|
_mofp_set_empty_if_defined(${_name} INCLUDE_DIRS)
|
||||||
|
_mofp_set_empty_if_defined(${_name} INCLUDE_DIR)
|
||||||
|
_mofp_set_empty_if_defined(${_name} INCLUDES)
|
||||||
|
_mofp_set_empty_if_defined(${_name} LIBRARY)
|
||||||
|
_mofp_set_empty_if_defined(${_name} LIBRARIES)
|
||||||
|
_mofp_set_empty_if_defined(${_name} LIBS)
|
||||||
|
_mofp_set_empty_if_defined(${_name} FLAGS)
|
||||||
|
_mofp_set_empty_if_defined(${_name} DEFINITIONS)
|
||||||
|
endif (WITH_${_name})
|
||||||
|
endmacro (MACRO_OPTIONAL_FIND_PACKAGE)
|
||||||
|
|
43
CalamaresAddBrandingSubdirectory.cmake
Normal file
43
CalamaresAddBrandingSubdirectory.cmake
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
include( CMakeColors )
|
||||||
|
|
||||||
|
function( calamares_add_branding_subdirectory )
|
||||||
|
set( SUBDIRECTORY ${ARGV0} )
|
||||||
|
|
||||||
|
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
||||||
|
add_subdirectory( $SUBDIRECTORY )
|
||||||
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
||||||
|
|
||||||
|
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" )
|
||||||
|
set( BRANDING_DIR share/calamares/branding )
|
||||||
|
set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${SUBDIRECTORY} )
|
||||||
|
|
||||||
|
if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" )
|
||||||
|
message( "-- ${BoldYellow}Warning:${ColorReset} branding component ${BoldRed}${SUBDIRECTORY}${ColorReset} has a translations subdirectory but no CMakeLists.txt." )
|
||||||
|
message( "" )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# We glob all the files inside the subdirectory, and we make sure they are
|
||||||
|
# synced with the bindir structure and installed.
|
||||||
|
file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*" )
|
||||||
|
foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} )
|
||||||
|
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} )
|
||||||
|
configure_file( ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} COPYONLY )
|
||||||
|
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE}
|
||||||
|
DESTINATION ${BRANDING_COMPONENT_DESTINATION} )
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
||||||
|
if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
||||||
|
message( " ${Green}TYPE:${ColorReset} branding component" )
|
||||||
|
# message( " ${Green}FILES:${ColorReset} ${BRANDING_COMPONENT_FILES}" )
|
||||||
|
message( " ${Green}BRANDING_COMPONENT_DESTINATION:${ColorReset} ${BRANDING_COMPONENT_DESTINATION}" )
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message( "-- ${BoldYellow}Warning:${ColorReset} tried to add branding component subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no branding.desc." )
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
@@ -1,66 +1,34 @@
|
|||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Calamares is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
# License-Filename: LICENSE
|
|
||||||
#
|
|
||||||
###
|
|
||||||
#
|
|
||||||
# Support functions for building plugins.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
#
|
|
||||||
# calamares_add_library(
|
|
||||||
# library-name
|
|
||||||
# EXPORT_MACRO macro-name
|
|
||||||
# TARGET_TYPE <STATIC|MODULE|...>
|
|
||||||
# EXPORT export-name
|
|
||||||
# VERSION version
|
|
||||||
# SOVERSION version
|
|
||||||
# INSTALL_BINDIR dir
|
|
||||||
# RESOURCES resource-file
|
|
||||||
# SOURCES source-file...
|
|
||||||
# UI ui-file...
|
|
||||||
# LINK_LIBRARIES lib...
|
|
||||||
# LINK_PRIVATE_LIBRARIES lib...
|
|
||||||
# COMPILE_DEFINITIONS def...
|
|
||||||
# [NO_INSTALL]
|
|
||||||
# [NO_VERSION]
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# The COMPILE_DEFINITIONS are set on the resulting module with a suitable
|
|
||||||
# flag (i.e. `-D`) so only state the name (optionally, also the value)
|
|
||||||
# without a `-D` prefixed to it. Pass in a CMake list as needed.
|
|
||||||
include( CMakeParseArguments )
|
include( CMakeParseArguments )
|
||||||
include( CalamaresAutomoc )
|
|
||||||
|
|
||||||
function(calamares_add_library)
|
function(calamares_add_library)
|
||||||
# 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_INSTALL NO_VERSION)
|
set(options NO_INSTALL NO_VERSION)
|
||||||
set(oneValueArgs NAME EXPORT_MACRO TARGET_TYPE EXPORT VERSION SOVERSION INSTALL_BINDIR RESOURCES)
|
set(oneValueArgs NAME TYPE EXPORT_MACRO TARGET TARGET_TYPE EXPORT VERSION SOVERSION INSTALL_BINDIR RESOURCES)
|
||||||
set(multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS)
|
set(multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS QT5_MODULES)
|
||||||
cmake_parse_arguments(LIBRARY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
cmake_parse_arguments(LIBRARY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
set(LIBRARY_NAME ${NAME})
|
set(LIBRARY_NAME ${NAME})
|
||||||
|
|
||||||
|
|
||||||
|
# message("*** Arguments for ${LIBRARY_NAME}")
|
||||||
|
# message("Sources: ${LIBRARY_SOURCES}")
|
||||||
|
# message("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
|
||||||
|
# message("UI: ${LIBRARY_UI}")
|
||||||
|
# message("TARGET_TYPE: ${LIBRARY_TARGET_TYPE}")
|
||||||
|
# message("EXPORT_MACRO: ${LIBRARY_EXPORT_MACRO}")
|
||||||
|
# message("NO_INSTALL: ${LIBRARY_NO_INSTALL}")
|
||||||
|
|
||||||
set(target ${LIBRARY_NAME})
|
set(target ${LIBRARY_NAME})
|
||||||
|
|
||||||
# qt stuff
|
# qt stuff
|
||||||
include_directories(${CMAKE_CURRENT_LIST_DIR})
|
include_directories(${CMAKE_CURRENT_LIST_DIR})
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
if(LIBRARY_UI)
|
||||||
|
qt5_wrap_ui(LIBRARY_UI_SOURCES ${LIBRARY_UI})
|
||||||
|
list(APPEND LIBRARY_SOURCES ${LIBRARY_UI_SOURCES})
|
||||||
|
endif()
|
||||||
|
|
||||||
# add resources from current dir
|
# add resources from current dir
|
||||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}")
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}")
|
||||||
qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}")
|
qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}")
|
||||||
@@ -77,29 +45,31 @@ function(calamares_add_library)
|
|||||||
add_library(${target} SHARED ${LIBRARY_SOURCES})
|
add_library(${target} SHARED ${LIBRARY_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
calamares_automoc(${target})
|
# HACK: add qt modules - every lib should define its own set of modules
|
||||||
if(LIBRARY_UI)
|
qt5_use_modules(${target} Core Gui Widgets ${LIBRARY_QT5_MODULES})
|
||||||
calamares_autouic(${target} ${LIBRARY_UI})
|
|
||||||
endif()
|
# definitions - can this be moved into set_target_properties below?
|
||||||
|
add_definitions(${QT_DEFINITIONS})
|
||||||
|
set_target_properties(${target} PROPERTIES AUTOMOC TRUE)
|
||||||
|
|
||||||
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})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBRARY_COMPILE_DEFINITIONS)
|
if(LIBRARY_COMPILE_DEFINITIONS)
|
||||||
set( _lib_definitions "${LIBRARY_EXPORT_MACRO}" ${LIBRARY_COMPILE_DEFINITIONS} )
|
# Dear CMake, i hate you! Sincerely, domme
|
||||||
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS "${_lib_definitions}")
|
# At least in CMake 2.8.8, you CANNOT set more than one COMPILE_DEFINITIONS value
|
||||||
|
# only takes the first one if called multiple times or bails out with wrong number of arguments
|
||||||
|
# when passing in a list, thus i redefine the export macro here in hope it won't mess up other targets
|
||||||
|
add_definitions( "-D${LIBRARY_EXPORT_MACRO}" )
|
||||||
|
|
||||||
|
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_COMPILE_DEFINITIONS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# add link targets
|
# add link targets
|
||||||
target_link_libraries(${target}
|
target_link_libraries(${target} ${CALAMARES_LIBRARIES})
|
||||||
LINK_PUBLIC ${Calamares_LIBRARIES}
|
|
||||||
Qt5::Core
|
|
||||||
Qt5::Gui
|
|
||||||
Qt5::Widgets
|
|
||||||
)
|
|
||||||
if(LIBRARY_LINK_LIBRARIES)
|
if(LIBRARY_LINK_LIBRARIES)
|
||||||
target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES})
|
target_link_libraries(${target} ${LIBRARY_LINK_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
if(LIBRARY_LINK_PRIVATE_LIBRARIES)
|
if(LIBRARY_LINK_PRIVATE_LIBRARIES)
|
||||||
target_link_libraries(${target} LINK_PRIVATE ${LIBRARY_LINK_PRIVATE_LIBRARIES})
|
target_link_libraries(${target} LINK_PRIVATE ${LIBRARY_LINK_PRIVATE_LIBRARIES})
|
||||||
@@ -124,6 +94,9 @@ function(calamares_add_library)
|
|||||||
set(LIBRARY_INSTALL_LIBDIR "${LIBRARY_INSTALL_BINDIR}")
|
set(LIBRARY_INSTALL_LIBDIR "${LIBRARY_INSTALL_BINDIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#message("INSTALL_BINDIR: ${LIBRARY_INSTALL_BINDIR}")
|
||||||
|
#message("INSTALL_LIBDIR: ${LIBRARY_INSTALL_LIBDIR}")
|
||||||
|
|
||||||
# make installation optional, maybe useful for dummy plugins one day
|
# make installation optional, maybe useful for dummy plugins one day
|
||||||
if(NOT LIBRARY_NO_INSTALL)
|
if(NOT LIBRARY_NO_INSTALL)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
43
CalamaresAddModuleSubdirectory.cmake
Normal file
43
CalamaresAddModuleSubdirectory.cmake
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
include( CMakeColors )
|
||||||
|
|
||||||
|
function( calamares_add_module_subdirectory )
|
||||||
|
set( SUBDIRECTORY ${ARGV0} )
|
||||||
|
|
||||||
|
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
||||||
|
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
||||||
|
add_subdirectory( ${SUBDIRECTORY} )
|
||||||
|
# ...otherwise, we look for a module.desc.
|
||||||
|
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
|
||||||
|
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
||||||
|
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
||||||
|
set( MODULE_CONFIG_FILE ${SUBDIRECTORY}.conf )
|
||||||
|
|
||||||
|
# We glob all the files inside the subdirectory, and we make sure they are
|
||||||
|
# synced with the bindir structure and installed.
|
||||||
|
file( GLOB MODULE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*" )
|
||||||
|
foreach( MODULE_FILE ${MODULE_FILES} )
|
||||||
|
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${MODULE_FILE} )
|
||||||
|
configure_file( ${SUBDIRECTORY}/${MODULE_FILE} ${SUBDIRECTORY}/${MODULE_FILE} COPYONLY )
|
||||||
|
|
||||||
|
if( "${MODULE_FILE}" STREQUAL "${MODULE_CONFIG_FILE}" )
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
||||||
|
DESTINATION share/calamares/modules )
|
||||||
|
else()
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
||||||
|
DESTINATION ${MODULE_DESTINATION} )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
||||||
|
if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
||||||
|
message( " ${Green}TYPE:${ColorReset} jobmodule" )
|
||||||
|
# message( " ${Green}FILES:${ColorReset} ${MODULE_FILES}" )
|
||||||
|
message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" )
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt or module.desc." )
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
86
CalamaresAddPlugin.cmake
Normal file
86
CalamaresAddPlugin.cmake
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
include( CMakeParseArguments )
|
||||||
|
include( ${CALAMARES_CMAKE_DIR}/CalamaresAddLibrary.cmake )
|
||||||
|
|
||||||
|
function( calamares_add_plugin )
|
||||||
|
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
||||||
|
set( NAME ${ARGV0} )
|
||||||
|
set( options NO_INSTALL SHARED_LIB )
|
||||||
|
set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES )
|
||||||
|
set( multiValueArgs SOURCES UI LINK_LIBRARIES COMPILE_DEFINITIONS )
|
||||||
|
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||||
|
set( PLUGIN_NAME ${NAME} )
|
||||||
|
set( PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME} )
|
||||||
|
set( PLUGIN_DESC_FILE module.desc )
|
||||||
|
set( PLUGIN_CONFIG_FILE ${NAME}.conf )
|
||||||
|
set( PLUGIN_DATA_DESTINATION share/calamares/modules )
|
||||||
|
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
|
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
|
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
|
|
||||||
|
include( CMakeColors )
|
||||||
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}" )
|
||||||
|
if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
|
||||||
|
message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" )
|
||||||
|
message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" )
|
||||||
|
# message( " ${Green}SOURCES:${ColorReset} ${PLUGIN_SOURCES}" )
|
||||||
|
# message( " ${Green}UI:${ColorReset} ${PLUGIN_UI}" )
|
||||||
|
# message( " ${Green}EXPORT_MACRO:${ColorReset} ${PLUGIN_EXPORT_MACRO}" )
|
||||||
|
# message( " ${Green}NO_INSTALL:${ColorReset} ${PLUGIN_NO_INSTALL}" )
|
||||||
|
message( " ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}" )
|
||||||
|
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE}" )
|
||||||
|
message( " ${Green}CONFIGURATION_FILE:${ColorReset} ${PLUGIN_CONFIG_FILE} => ${PLUGIN_DATA_DESTINATION}" )
|
||||||
|
endif()
|
||||||
|
if( PLUGIN_RESOURCES )
|
||||||
|
message( " ${Green}RESOURCES:${ColorReset} ${PLUGIN_RESOURCES}" )
|
||||||
|
endif()
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
# create target name once for convenience
|
||||||
|
set( target "calamares_${PLUGIN_TYPE}_${PLUGIN_NAME}" )
|
||||||
|
|
||||||
|
# determine target type
|
||||||
|
if( NOT ${PLUGIN_SHARED_LIB} )
|
||||||
|
set( target_type "MODULE" )
|
||||||
|
else()
|
||||||
|
set( target_type "SHARED" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list( APPEND calamares_add_library_args
|
||||||
|
"${target}"
|
||||||
|
"EXPORT_MACRO" "${PLUGIN_EXPORT_MACRO}"
|
||||||
|
"TARGET_TYPE" "${target_type}"
|
||||||
|
"SOURCES" "${PLUGIN_SOURCES}"
|
||||||
|
)
|
||||||
|
|
||||||
|
if( PLUGIN_UI )
|
||||||
|
list( APPEND calamares_add_library_args "UI" "${PLUGIN_UI}" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if( PLUGIN_LINK_LIBRARIES )
|
||||||
|
list( APPEND calamares_add_library_args "LINK_LIBRARIES" "${PLUGIN_LINK_LIBRARIES}" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if( PLUGIN_COMPILE_DEFINITIONS )
|
||||||
|
list( APPEND calamares_add_library_args "COMPILE_DEFINITIONS" ${PLUGIN_COMPILE_DEFINITIONS} )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list( APPEND calamares_add_library_args "NO_VERSION" )
|
||||||
|
|
||||||
|
list( APPEND calamares_add_library_args "INSTALL_BINDIR" "${PLUGIN_DESTINATION}" )
|
||||||
|
|
||||||
|
if( PLUGIN_RESOURCES )
|
||||||
|
list( APPEND calamares_add_library_args "RESOURCES" "${PLUGIN_RESOURCES}" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
calamares_add_library( ${calamares_add_library_args} )
|
||||||
|
|
||||||
|
configure_file( ${PLUGIN_DESC_FILE} ${PLUGIN_DESC_FILE} COPYONLY )
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE}
|
||||||
|
DESTINATION ${PLUGIN_DESTINATION} )
|
||||||
|
|
||||||
|
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE}" )
|
||||||
|
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
||||||
|
DESTINATION ${PLUGIN_DATA_DESTINATION} )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
4
CalamaresBuildTreeSettings.cmake.in
Normal file
4
CalamaresBuildTreeSettings.cmake.in
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
set(CALAMARES_INCLUDE_DIRS
|
||||||
|
"@PROJECT_SOURCE_DIR@/src/libcalamares"
|
||||||
|
"@PROJECT_BINARY_DIR@/src/libcalamares"
|
||||||
|
)
|
@@ -1,78 +1,21 @@
|
|||||||
# 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_EXECUTABLE - the bar executable
|
||||||
#
|
|
||||||
# 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
|
|
||||||
|
|
||||||
@PACKAGE_INIT@
|
# Compute paths
|
||||||
|
get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||||
### Versioning and IMPORTED targets
|
if(EXISTS "${CALAMARES_CMAKE_DIR}/CMakeCache.txt")
|
||||||
#
|
# In build tree
|
||||||
#
|
include("${CALAMARES_CMAKE_DIR}/CalamaresBuildTreeSettings.cmake")
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/CalamaresConfigVersion.cmake)
|
else()
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/CalamaresTargets.cmake)
|
set(CALAMARES_INCLUDE_DIRS "${CALAMARES_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@/libcalamares")
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
#
|
|
||||||
# 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()
|
|
||||||
|
|
||||||
# Qt5 infrastructure for translations is required
|
|
||||||
set(qt5_required Core Widgets LinguistTools)
|
|
||||||
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(PREPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
|
||||||
find_package(KF5 REQUIRED COMPONENTS ${kf5_required})
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
### Legacy support
|
# Our library dependencies (contains definitions for IMPORTED targets)
|
||||||
#
|
include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake")
|
||||||
#
|
|
||||||
set(Calamares_LIB_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
|
|
||||||
set(Calamares_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
|
|
||||||
set(Calamares_LIBRARIES Calamares::calamares)
|
|
||||||
|
|
||||||
### CMake support
|
# These are IMPORTED targets created by CalamaresLibraryDepends.cmake
|
||||||
#
|
set(CALAMARES_LIBRARIES calamares)
|
||||||
#
|
set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake")
|
||||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
|
|
||||||
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@)
|
|
||||||
|
12
CalamaresConfigVersion.cmake.in
Normal file
12
CalamaresConfigVersion.cmake.in
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
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()
|
||||||
|
|
12
CalamaresUse.cmake.in
Normal file
12
CalamaresUse.cmake.in
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#FIXME: this duplicates top level cmakelists: how can we reduce code duplication?
|
||||||
|
|
||||||
|
find_package( Qt5 5.3.0 CONFIG REQUIRED Core Gui Widgets LinguistTools )
|
||||||
|
|
||||||
|
if(NOT CALAMARES_CMAKE_DIR)
|
||||||
|
set(CALAMARES_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include( "${CALAMARES_CMAKE_DIR}/CalamaresAddLibrary.cmake" )
|
||||||
|
include( "${CALAMARES_CMAKE_DIR}/CalamaresAddModuleSubdirectory.cmake" )
|
||||||
|
include( "${CALAMARES_CMAKE_DIR}/CalamaresAddPlugin.cmake" )
|
||||||
|
include( "${CALAMARES_CMAKE_DIR}/CalamaresAddBrandingSubdirectory.cmake" )
|
@@ -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
|
|
156
HACKING.md
Normal file
156
HACKING.md
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
Hacking on Calamares
|
||||||
|
====================
|
||||||
|
|
||||||
|
Licensing
|
||||||
|
---------
|
||||||
|
Calamares is released under the terms of the GNU GPL, version 3 or later. Every source file must have a license header, with a list of copyright holders and years.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* Copyright 2013-2014, Random Person <name@example.com>
|
||||||
|
* Copyright 2010, Someone Else <someone@example.com>
|
||||||
|
*
|
||||||
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Calamares is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
Copyright holders must be physical or legal personalities. A statement such as `Copyright 2014, The FooBarQuux project` has no legal value if "The FooBarQuux project" is not the legal name of a person, company, incorporated organization, etc.
|
||||||
|
|
||||||
|
Formatting
|
||||||
|
----------
|
||||||
|
* Spaces, not tabs.
|
||||||
|
* Indentation is 4 spaces.
|
||||||
|
* Lines should be limited to 90 characters.
|
||||||
|
* Spaces between brackets and argument functions, including for template arguments
|
||||||
|
* No space before brackets, except for keywords, for example `function( argument )` but
|
||||||
|
`if ( condition )`.
|
||||||
|
* For pointer and reference variable declarations, put a space before the variable name
|
||||||
|
and no space between the type and the `*` or `&`.
|
||||||
|
* `for`, `if`, `else`, `while` and similar statements put the brackets on the next line,
|
||||||
|
although brackets are not needed for single statements.
|
||||||
|
* Function and class definitions have their brackets on separate lines.
|
||||||
|
* A function implementation's return type is on its own line.
|
||||||
|
* `CamelCase.{cpp,h}` style file names.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
bool
|
||||||
|
MyClass::myMethod( QStringList list, const QString& name )
|
||||||
|
{
|
||||||
|
if ( list.isEmpty() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
foreach ( const QString& string, list )
|
||||||
|
cDebug() << "Current string is " << string;
|
||||||
|
|
||||||
|
switch ( m_enumValue )
|
||||||
|
{
|
||||||
|
case Something:
|
||||||
|
return true;
|
||||||
|
case SomethingElse:
|
||||||
|
doSomething();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use the `hacking/calamaresstyle` script to run
|
||||||
|
[astyle](http://astyle.sf.net) on your code and have it formatted the right
|
||||||
|
way.
|
||||||
|
|
||||||
|
**NOTE:** An .editorconfig file is included to assist with formatting. In order to take advantage of this functionality you will need to acquire the [EditorConfig](http://editorconfig.org/#download) plug-in for your editor.
|
||||||
|
|
||||||
|
Naming
|
||||||
|
------
|
||||||
|
* Use CamelCase for everything.
|
||||||
|
* Local variables should start out with a lowercase letter.
|
||||||
|
* Class names are capitalized
|
||||||
|
* Prefix class member variables with `m_`, e.g. `m_queue`.
|
||||||
|
* Prefix static member variables with `s_`, e.g. `s_instance`.
|
||||||
|
* Functions are named in the Qt style, like Java's, without the 'get' prefix.
|
||||||
|
* A getter is `variable()`.
|
||||||
|
* If it's a getter for a boolean, prefix with 'is', so `isCondition()`.
|
||||||
|
* A setter is `setVariable( arg )`.
|
||||||
|
|
||||||
|
Includes
|
||||||
|
--------
|
||||||
|
Header includes should be listed in the following order:
|
||||||
|
|
||||||
|
* own header,
|
||||||
|
* Calamares includes,
|
||||||
|
* includes for Qt-based libraries,
|
||||||
|
* Qt includes,
|
||||||
|
* other includes.
|
||||||
|
|
||||||
|
They should also be sorted alphabetically for ease of locating them.
|
||||||
|
|
||||||
|
Includes in a header file should be kept to the absolute minimum, as to keep compile times short. This can be achieved by using forward declarations instead of includes,
|
||||||
|
like `class QListView;`.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
#include "Settings.h"
|
||||||
|
|
||||||
|
#include "CalamaresApplication.h"
|
||||||
|
#include "utils/CalamaresUtils.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
#include "YamlUtils.h"
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
#include <QFile>
|
||||||
|
|
||||||
|
#include <yaml-cpp/yaml.h>
|
||||||
|
```
|
||||||
|
|
||||||
|
Use include guards, not `#pragma once`.
|
||||||
|
|
||||||
|
C++ tips
|
||||||
|
--------
|
||||||
|
All C++11 features are acceptable, and the use of new C++11 features is encouraged when
|
||||||
|
it makes the code easier to understand and more maintainable.
|
||||||
|
|
||||||
|
The use of `nullptr` is preferred over the use of `0` or `NULL`.
|
||||||
|
|
||||||
|
For Qt containers it is better to use Qt's own `foreach`. For all other containers, the
|
||||||
|
range-based `for` syntax introduced with C++11 is preferred ([see this blog post][1]).
|
||||||
|
|
||||||
|
When re-implementing a virtual method, always add the `override` keyword.
|
||||||
|
|
||||||
|
Try to keep your code const correct. Declare methods const if they don't mutate the
|
||||||
|
object, and use const variables. It improves safety, and also makes it easier to
|
||||||
|
understand the code.
|
||||||
|
|
||||||
|
For the Qt signal-slot system, the new (Qt5) syntax is to be preferred because it allows
|
||||||
|
the compiler to check for the existence of signals and slots. As an added benefit, the
|
||||||
|
new syntax can also be used with `tr1::bind` and C++11 lambdas. For more information, see
|
||||||
|
the [Qt wiki][2].
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
connect( m_next, &QPushButton::clicked, this, &ViewManager::next );
|
||||||
|
|
||||||
|
connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, [this]
|
||||||
|
{
|
||||||
|
m_mainwindow->show();
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
---------
|
||||||
|
Use `cDebug()` and `cLog()` from `utils/Logger.h`.
|
||||||
|
|
||||||
|
|
||||||
|
[1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
|
||||||
|
[2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax
|
@@ -1,24 +0,0 @@
|
|||||||
|
|
||||||
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$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
@@ -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/>.
|
|
||||||
*/
|
|
@@ -1,488 +0,0 @@
|
|||||||
|
|
||||||
The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
|
||||||
|
|
||||||
You may use, distribute and copy the KD Tools Library under the terms of
|
|
||||||
GNU Library General Public License version 2, which is displayed below.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
|
||||||
Version 2, June 1991
|
|
||||||
|
|
||||||
Copyright (C) 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.
|
|
||||||
|
|
||||||
[This is the first released version of the library GPL. It is
|
|
||||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
|
||||||
|
|
||||||
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 Library General Public License, applies to some
|
|
||||||
specially designated Free Software Foundation software, and to any
|
|
||||||
other libraries whose authors decide to use it. You can use it for
|
|
||||||
your libraries, 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 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 a program 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.
|
|
||||||
|
|
||||||
Our method of protecting your rights has two steps: (1) copyright
|
|
||||||
the library, and (2) offer you this license which gives you legal
|
|
||||||
permission to copy, distribute and/or modify the library.
|
|
||||||
|
|
||||||
Also, for each distributor's protection, we want to make certain
|
|
||||||
that everyone understands that there is no warranty for this free
|
|
||||||
library. If the library is modified by someone else and passed on, we
|
|
||||||
want its recipients to know that what they have is not the original
|
|
||||||
version, 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 companies distributing free
|
|
||||||
software will individually obtain patent licenses, thus in effect
|
|
||||||
transforming the program into proprietary software. To prevent this,
|
|
||||||
we have made it clear that any patent must be licensed for everyone's
|
|
||||||
free use or not licensed at all.
|
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the ordinary
|
|
||||||
GNU General Public License, which was designed for utility programs. This
|
|
||||||
license, the GNU Library General Public License, applies to certain
|
|
||||||
designated libraries. This license is quite different from the ordinary
|
|
||||||
one; be sure to read it in full, and don't assume that anything in it is
|
|
||||||
the same as in the ordinary license.
|
|
||||||
|
|
||||||
The reason we have a separate public license for some libraries is that
|
|
||||||
they blur the distinction we usually make between modifying or adding to a
|
|
||||||
program and simply using it. Linking a program with a library, without
|
|
||||||
changing the library, is in some sense simply using the library, and is
|
|
||||||
analogous to running a utility program or application program. However, in
|
|
||||||
a textual and legal sense, the linked executable is a combined work, a
|
|
||||||
derivative of the original library, and the ordinary General Public License
|
|
||||||
treats it as such.
|
|
||||||
|
|
||||||
Because of this blurred distinction, using the ordinary General
|
|
||||||
Public License for libraries did not effectively promote software
|
|
||||||
sharing, because most developers did not use the libraries. We
|
|
||||||
concluded that weaker conditions might promote sharing better.
|
|
||||||
|
|
||||||
However, unrestricted linking of non-free programs would deprive the
|
|
||||||
users of those programs of all benefit from the free status of the
|
|
||||||
libraries themselves. This Library General Public License is intended to
|
|
||||||
permit developers of non-free programs to use free libraries, while
|
|
||||||
preserving your freedom as a user of such programs to change the free
|
|
||||||
libraries that are incorporated in them. (We have not seen how to achieve
|
|
||||||
this as regards changes in header files, but we have achieved it as regards
|
|
||||||
changes in the actual functions of the Library.) The hope is that this
|
|
||||||
will lead to faster development of free libraries.
|
|
||||||
|
|
||||||
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, while the latter only
|
|
||||||
works together with the library.
|
|
||||||
|
|
||||||
Note that it is possible for a library to be covered by the ordinary
|
|
||||||
General Public License rather than by this special one.
|
|
||||||
|
|
||||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any software library which
|
|
||||||
contains a notice placed by the copyright holder or other authorized
|
|
||||||
party saying it may be distributed under the terms of this Library
|
|
||||||
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 compile 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) 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.
|
|
||||||
|
|
||||||
c) 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.
|
|
||||||
|
|
||||||
d) 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 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.
|
|
||||||
|
|
||||||
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 to
|
|
||||||
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 Library 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 a brief 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 Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 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
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library 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!
|
|
@@ -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.
|
|
65
README.md
65
README.md
@@ -2,38 +2,53 @@
|
|||||||
---------
|
---------
|
||||||
|
|
||||||
[](https://github.com/calamares/calamares/releases)
|
[](https://github.com/calamares/calamares/releases)
|
||||||
[](https://travis-ci.org/calamares/calamares)
|
[](https://calamares.io/ci/job/calamares-master/)
|
||||||
[](https://scan.coverity.com/projects/5389)
|
[](https://scan.coverity.com/projects/5389)
|
||||||
[](https://github.com/calamares/calamares/blob/calamares/LICENSE)
|
[](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) |
|
| [Report a Bug](https://calamares.io/bugs/) | [Contribute](https://github.com/calamares/calamares/blob/master/HACKING.md) | [Translate](https://www.transifex.com/projects/p/calamares/) | Freenode (IRC): #calamares |
|
||||||
|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|:--------------------------:|
|
|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
Main:
|
Compiler with C++11 support: GCC >= 4.8.4 or Clang >= 3.5.1
|
||||||
* 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)
|
|
||||||
|
|
||||||
Individual modules may have their own requirements;
|
| Main | Welcome module | Partitioning module | Bootloader module | Unpackfs module |
|
||||||
these are listed in CMake output.
|
|:----:|:--------------:|:-------------------:|:-----------------:|:---------------:|
|
||||||
Particular requirements (not complete):
|
| CMake >= 2.8.12 | NetworkManager | extra-cmake-modules | systemd-boot or GRUB2 | squashfs-tools |
|
||||||
|
| Qt >= 5.3 | UPower | kconfig (part of KF5) | sgdisk | rsync |
|
||||||
|
| yaml-cpp >= 0.5.1 | | solid (part of KF5) | | |
|
||||||
|
| Python >= 3.3 | | kcoreaddons (part of KF5) | | |
|
||||||
|
| Boost.Python >= 1.55.0 | | ki18n (part of KF5) | | |
|
||||||
|
| dmidecode | | sgdisk | | |
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
[__Setting up branding__](https://github.com/calamares/calamares/blob/master/src/branding/README.md)
|
||||||
|
|
||||||
|
[__Working with modules__](https://github.com/calamares/calamares/blob/master/src/modules/README.md)
|
||||||
|
|
||||||
* *fsresizer* KPMCore >= 3.3 (>= 4.1 recommended)
|
|
||||||
* *partition* KPMCore >= 3.3 (>= 4.1 recommended)
|
|
||||||
* *users* LibPWQuality (optional)
|
|
||||||
|
|
||||||
### Building
|
### Building
|
||||||
|
Clone Calamares from GitHub and `cd` into the calamares directory, then:
|
||||||
|
```
|
||||||
|
$ git submodule init
|
||||||
|
$ git submodule update
|
||||||
|
$ mkdir build
|
||||||
|
$ cd build
|
||||||
|
$ cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_PARTITIONMANAGER=1 ..
|
||||||
|
$ make
|
||||||
|
```
|
||||||
|
|
||||||
See [wiki](https://github.com/calamares/calamares/wiki) for up to date
|
### Design Notes
|
||||||
[building](https://github.com/calamares/calamares/wiki/Develop-Guide)
|
Calamares is currently split as follows:
|
||||||
and [deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
|
1. __libcalamares__ - The back-end library.
|
||||||
instructions.
|
* Only depends on QtCore, yaml-cpp, Python and Boost.Python.
|
||||||
|
* Provides a job queue and generic jobs.
|
||||||
|
* Comes with 3 job interfaces: C++, Python and process (the latter is very limited).
|
||||||
|
2. __libcalamaresui__ - The front-end library.
|
||||||
|
* Same dependencies as libcalamares, plus QtWidgets and other Qt modules.
|
||||||
|
* Comes with a module loading system, for different kinds of plugins.
|
||||||
|
* Supports branding components.
|
||||||
|
* Presents a bunch of pages in a scripted order, enqueues jobs in the back-end library.
|
||||||
|
3. __calamares__ - The main executable.
|
||||||
|
* A thin wrapper around libcalamaresui; starts up and plugs together all the parts.
|
||||||
|
@@ -1,219 +1,12 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
Version=1.0
|
Version=1.0
|
||||||
Name=Install System
|
Name=Calamares
|
||||||
GenericName=System Installer
|
GenericName=System Installer
|
||||||
Keywords=calamares;system;installer;
|
|
||||||
TryExec=calamares
|
TryExec=calamares
|
||||||
Exec=pkexec /usr/bin/calamares
|
Exec=pkexec /usr/bin/calamares
|
||||||
Comment=Calamares — System Installer
|
Comment=Calamares — System Installer
|
||||||
Icon=calamares
|
Icon=calamares
|
||||||
Terminal=false
|
Terminal=false
|
||||||
StartupNotify=true
|
StartupNotify=false
|
||||||
Categories=Qt;System;
|
Categories=Qt;System;
|
||||||
X-AppStream-Ignore=true
|
|
||||||
|
|
||||||
Name[ar]=تثبيت النظام
|
|
||||||
Icon[ar]=كالامارس
|
|
||||||
GenericName[ar]=مثبت النظام
|
|
||||||
Comment[ar]=كالامارس - مثبت النظام
|
|
||||||
Name[as]=চিছটেম ইনস্তল কৰক
|
|
||||||
Icon[as]=কেলামাৰেচ
|
|
||||||
GenericName[as]=চিছটেম ইনস্তলাৰ
|
|
||||||
Comment[as]=কেলামাৰেচ — চিছটেম ইনস্তলাৰ
|
|
||||||
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[be]=Усталяваць сістэму
|
|
||||||
Icon[be]=calamares
|
|
||||||
GenericName[be]=Усталёўшчык сістэмы
|
|
||||||
Comment[be]=Calamares — усталёўшчык сістэмы
|
|
||||||
Name[bg]=Инсталирай системата
|
|
||||||
Icon[bg]=calamares
|
|
||||||
GenericName[bg]=Системен Инсталатор
|
|
||||||
Comment[bg]=Calamares — Системен Инсталатор
|
|
||||||
Name[ca]=Instal·la el sistema
|
|
||||||
Icon[ca]=calamares
|
|
||||||
GenericName[ca]=Instal·lador de sistema
|
|
||||||
Comment[ca]=Calamares — Instal·lador de sistema
|
|
||||||
Name[da]=Installér system
|
|
||||||
Icon[da]=calamares
|
|
||||||
GenericName[da]=Systeminstallationsprogram
|
|
||||||
Comment[da]=Calamares — Systeminstallationsprogram
|
|
||||||
Name[de]=System installieren
|
|
||||||
Icon[de]=calamares
|
|
||||||
GenericName[de]=Installation des Betriebssystems
|
|
||||||
Comment[de]=Calamares - Installation des Betriebssystems
|
|
||||||
Name[el]=Εγκατάσταση συστήματος
|
|
||||||
Icon[el]=calamares
|
|
||||||
GenericName[el]=Εγκατάσταση συστήματος
|
|
||||||
Comment[el]=Calamares — Εγκατάσταση συστήματος
|
|
||||||
Name[en_GB]=Install System
|
|
||||||
Icon[en_GB]=calamares
|
|
||||||
GenericName[en_GB]=System Installer
|
|
||||||
Comment[en_GB]=Calamares — System Installer
|
|
||||||
Name[es]=Instalar Sistema
|
|
||||||
Icon[es]=calamares
|
|
||||||
GenericName[es]=Instalador del Sistema
|
|
||||||
Comment[es]=Calamares — Instalador del Sistema
|
|
||||||
Name[et]=Paigalda süsteem
|
|
||||||
Icon[et]=calamares
|
|
||||||
GenericName[et]=Süsteemipaigaldaja
|
|
||||||
Comment[et]=Calamares — süsteemipaigaldaja
|
|
||||||
Name[eu]=Sistema instalatu
|
|
||||||
Icon[eu]=calamares
|
|
||||||
GenericName[eu]=Sistema instalatzailea
|
|
||||||
Comment[eu]=Calamares - sistema instalatzailea
|
|
||||||
Name[fa]=نصب سامانه
|
|
||||||
Icon[fa]=کالامارس
|
|
||||||
GenericName[fa]=نصبکنندهٔ سامانه
|
|
||||||
Comment[fa]=کالامارس — نصبکنندهٔ سامانه
|
|
||||||
Name[es_PR]=Instalar el sistema
|
|
||||||
Name[fr]=Installer le système
|
|
||||||
Icon[fr]=calamares
|
|
||||||
GenericName[fr]=Installateur système
|
|
||||||
Comment[fr]=Calamares - Installateur système
|
|
||||||
Name[gl]=Instalación do Sistema
|
|
||||||
Icon[gl]=calamares
|
|
||||||
GenericName[gl]=Instalador de sistemas
|
|
||||||
Comment[gl]=Calamares — Instalador de sistemas
|
|
||||||
Name[he]=התקנת מערכת
|
|
||||||
Icon[he]=calamares
|
|
||||||
GenericName[he]=אשף התקנה
|
|
||||||
Comment[he]=Calamares - אשף התקנה
|
|
||||||
Name[hi]=सिस्टम इंस्टॉल करें
|
|
||||||
Icon[hi]=calamares
|
|
||||||
GenericName[hi]=सिस्टम इंस्टॉलर
|
|
||||||
Comment[hi]=Calamares — सिस्टम इंस्टॉलर
|
|
||||||
Name[hr]=Instaliraj sustav
|
|
||||||
Icon[hr]=calamares
|
|
||||||
GenericName[hr]=Instalacija sustava
|
|
||||||
Comment[hr]=Calamares — Instalacija sustava
|
|
||||||
Name[hu]=Rendszer telepítése
|
|
||||||
Icon[hu]=calamares
|
|
||||||
GenericName[hu]=Rendszertelepítő
|
|
||||||
Comment[hu]=Calamares – Rendszertelepítő
|
|
||||||
Name[id]=Instal Sistem
|
|
||||||
Icon[id]=calamares
|
|
||||||
GenericName[id]=Pemasang
|
|
||||||
Comment[id]=Calamares — Pemasang Sistem
|
|
||||||
Name[is]=Setja upp kerfið
|
|
||||||
Icon[is]=calamares
|
|
||||||
GenericName[is]=Kerfis uppsetning
|
|
||||||
Comment[is]=Calamares — Kerfis uppsetning
|
|
||||||
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[ja]=システムをインストール
|
|
||||||
Icon[ja]=calamares
|
|
||||||
GenericName[ja]=システムインストーラー
|
|
||||||
Comment[ja]=Calamares — システムインストーラー
|
|
||||||
Name[ko]=시스템 설치
|
|
||||||
Icon[ko]=깔라마레스
|
|
||||||
GenericName[ko]=시스템 설치 관리자
|
|
||||||
Comment[ko]=깔라마레스 — 시스템 설치 관리자
|
|
||||||
Name[lt]=Įdiegti Sistemą
|
|
||||||
Icon[lt]=calamares
|
|
||||||
GenericName[lt]=Sistemos diegimas į kompiuterį
|
|
||||||
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]=Инсталирај го системот
|
|
||||||
Icon[mk]=calamares
|
|
||||||
GenericName[mk]=Системен Инсталер
|
|
||||||
Comment[mk]=Calamares - Системен Инсталер
|
|
||||||
Name[ml]=സിസ്റ്റം ഇൻസ്റ്റാൾ ചെയ്യുക
|
|
||||||
Icon[ml]=കലാമാരേസ്
|
|
||||||
GenericName[ml]=സിസ്റ്റം ഇൻസ്റ്റാളർ
|
|
||||||
Comment[ml]=കലാമാരേസ് - സിസ്റ്റം ഇൻസ്റ്റാളർ
|
|
||||||
Name[nb]=Installer System
|
|
||||||
Icon[nb]=calamares
|
|
||||||
GenericName[nb]=Systeminstallatør
|
|
||||||
Comment[nb]=Calamares-systeminstallatør
|
|
||||||
Name[nl]=Installeer systeem
|
|
||||||
Icon[nl]=calamares
|
|
||||||
GenericName[nl]=Installatieprogramma
|
|
||||||
Comment[nl]=Calamares — Installatieprogramma
|
|
||||||
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[pl]=Zainstaluj system
|
|
||||||
Icon[pl]=calamares
|
|
||||||
GenericName[pl]=Instalator systemu
|
|
||||||
Comment[pl]=Calamares — Instalator systemu
|
|
||||||
Name[pt_BR]=Sistema de Instalação
|
|
||||||
Icon[pt_BR]=calamares
|
|
||||||
GenericName[pt_BR]=Instalador de Sistema
|
|
||||||
Comment[pt_BR]=Calamares — Instalador de Sistema
|
|
||||||
Name[ro]=Instalează sistemul
|
|
||||||
Icon[ro]=calamares
|
|
||||||
GenericName[ro]=Instalator de sistem
|
|
||||||
Comment[ro]=Calamares — Instalator de sistem
|
|
||||||
Name[ru]=Установить систему
|
|
||||||
Icon[ru]=calamares
|
|
||||||
GenericName[ru]=Установщик системы
|
|
||||||
Comment[ru]=Calamares - Установщик системы
|
|
||||||
Name[sk]=Inštalovať systém
|
|
||||||
Icon[sk]=calamares
|
|
||||||
GenericName[sk]=Inštalátor systému
|
|
||||||
Comment[sk]=Calamares — Inštalátor systému
|
|
||||||
Name[sl]=Namesti sistem
|
|
||||||
Name[sq]=Instalo Sistemin
|
|
||||||
Icon[sq]=calamares
|
|
||||||
GenericName[sq]=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]=Инсталирај систем
|
|
||||||
Icon[sr]=calamares
|
|
||||||
GenericName[sr]=Инсталатер система
|
|
||||||
Comment[sr]=Каламарес — инсталатер система
|
|
||||||
Name[sv]=Installera system
|
|
||||||
Icon[sv]=calamares
|
|
||||||
GenericName[sv]=Systeminstallerare
|
|
||||||
Comment[sv]=Calamares — Systeminstallerare
|
|
||||||
Name[th]=ติดตั้งระบบ
|
|
||||||
Name[uk]=Встановити Систему
|
|
||||||
Icon[uk]=calamares
|
|
||||||
GenericName[uk]=Встановлювач системи
|
|
||||||
Comment[uk]=Calamares - Встановлювач системи
|
|
||||||
Name[zh_CN]=安装系统
|
|
||||||
Icon[zh_CN]=calamares
|
|
||||||
GenericName[zh_CN]=系统安装程序
|
|
||||||
Comment[zh_CN]=Calamares — 系统安装程序
|
|
||||||
Name[zh_TW]=安裝系統
|
|
||||||
Icon[zh_TW]=calamares
|
|
||||||
GenericName[zh_TW]=系統安裝程式
|
|
||||||
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
|
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Version=1.0
|
|
||||||
Name=Install System
|
|
||||||
GenericName=System Installer
|
|
||||||
Keywords=calamares;system;installer;
|
|
||||||
TryExec=calamares
|
|
||||||
Exec=pkexec /usr/bin/calamares
|
|
||||||
Comment=Calamares — System Installer
|
|
||||||
Icon=calamares
|
|
||||||
Terminal=false
|
|
||||||
StartupNotify=true
|
|
||||||
Categories=Qt;System;
|
|
||||||
X-AppStream-Ignore=true
|
|
||||||
|
|
@@ -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.
|
|
275
ci/AppImage.sh
275
ci/AppImage.sh
@@ -1,275 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# 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
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
### END LICENSES
|
|
||||||
|
|
||||||
### USAGE
|
|
||||||
#
|
|
||||||
# Shell script to help build an AppImage for Calamares.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# AppImage.sh [-T|--tools-dir <dir>]
|
|
||||||
# [-C|--cmake-args <args>]
|
|
||||||
# [-c|--config-dir <dir>]
|
|
||||||
# [-s|--skip-build]
|
|
||||||
# [-p|--with-python]
|
|
||||||
#
|
|
||||||
# Multiple --cmake-args arguments will be collected together and passed to
|
|
||||||
# CMake before building the application.
|
|
||||||
#
|
|
||||||
# Use --tools-dir to indicate where the linuxdeploy tools are located.
|
|
||||||
#
|
|
||||||
# Use --config to copy a config-directory (with settings.conf and others)
|
|
||||||
# into the resulting image,
|
|
||||||
#
|
|
||||||
# Option --skip-build assumes that there is an already-built Calamares
|
|
||||||
# available in the AppImage build directory; use this when you are, e.g.
|
|
||||||
# re-packaging the image with different configuration. Option --with-python
|
|
||||||
# adds the Conda Python packaging ecosystem to the AppImage, which will make
|
|
||||||
# it **more** portable by disconnecting from the system Python libraries.
|
|
||||||
#
|
|
||||||
# The build process for AppImage proceeds in a directory build-AppImage
|
|
||||||
# that is created in the current directory.
|
|
||||||
#
|
|
||||||
# The resulting AppImage has XDG_* enabled, and appends the in-image
|
|
||||||
# directories to the current environment. You can set XDG_* in the
|
|
||||||
# current environment to use other configurations and data, e.g. the
|
|
||||||
# data in the current live environment. Or leave it unset, to try
|
|
||||||
# Calamares with only the configuration contained in the AppImage.
|
|
||||||
#
|
|
||||||
### END USAGE
|
|
||||||
|
|
||||||
TOOLS_DIR="."
|
|
||||||
CMAKE_ARGS=""
|
|
||||||
DO_REBUILD="true"
|
|
||||||
DO_CONDA="false"
|
|
||||||
CONFIG_DIR=""
|
|
||||||
while test "$#" -gt 0
|
|
||||||
do
|
|
||||||
case "x$1" in
|
|
||||||
x--help|x-h)
|
|
||||||
sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0"
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
x--tools-dir|x-T)
|
|
||||||
TOOLS_DIR="$2"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
x--cmake-args|x-C)
|
|
||||||
CMAKE_ARGS="$CMAKE_ARGS $2"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
x--config-dir|x-c)
|
|
||||||
CONFIG_DIR="$2"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
x--skip-build|x-s)
|
|
||||||
DO_REBUILD="false"
|
|
||||||
;;
|
|
||||||
x--with-python|x-p)
|
|
||||||
DO_CONDA="true"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "! Unknown argument '$1'."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
test "$#" -gt 0 || { echo "! Missing arguments."; exit 1; }
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
### Check where we're running
|
|
||||||
#
|
|
||||||
BIN_DIR=$( cd $( dirname "$0" ) && pwd -P )
|
|
||||||
test -d "$BIN_DIR" || { echo "! Could not find BIN_DIR"; exit 1; }
|
|
||||||
test -f "$BIN_DIR/AppImage.sh" || { echo "! $BIN_DIR does not have AppImage.sh"; exit 1; }
|
|
||||||
|
|
||||||
SRC_DIR=$( cd "$BIN_DIR/.." && pwd -P )
|
|
||||||
test -d "$SRC_DIR" || { echo "! Could not find SRC_DIR"; exit 1; }
|
|
||||||
test -d "$SRC_DIR/ci" || { echo "! $SRC_DIR isn't a top-level Calamares checkout"; exit 1; }
|
|
||||||
test -f "$SRC_DIR/CMakeLists.txt" || { echo "! SRC_DIR is missing CMakeLists.txt"; exit 1; }
|
|
||||||
|
|
||||||
### Check pre-requisites
|
|
||||||
#
|
|
||||||
BUILD_DIR=build-AppImage
|
|
||||||
test -d "$BUILD_DIR" || mkdir -p "$BUILD_DIR"
|
|
||||||
test -d "$BUILD_DIR" || { echo "! Could not create $BUILD_DIR"; exit 1; }
|
|
||||||
|
|
||||||
TOOLS_LIST="linuxdeploy-x86_64.AppImage linuxdeploy-plugin-qt-x86_64.AppImage"
|
|
||||||
$DO_CONDA && TOOLS_LIST="$TOOLS_LIST linuxdeploy-plugin-conda.sh"
|
|
||||||
|
|
||||||
for tool in $TOOLS_LIST
|
|
||||||
do
|
|
||||||
if test -x "$BUILD_DIR/$tool" ; then
|
|
||||||
# This tool is ok
|
|
||||||
:
|
|
||||||
else
|
|
||||||
if test -f "$TOOLS_DIR/$tool" ; then
|
|
||||||
cp "$TOOLS_DIR/$tool" "$BUILD_DIR/$tool" || exit 1
|
|
||||||
else
|
|
||||||
fetch=$( grep "^# URL .*$tool\$" "$0" | sed 's/# URL *//' )
|
|
||||||
curl -L -o "$BUILD_DIR/$tool" "$fetch"
|
|
||||||
fi
|
|
||||||
chmod +x "$BUILD_DIR/$tool"
|
|
||||||
test -x "$BUILD_DIR/$tool" || { echo "! Missing tool $tool in tools-dir $TOOLS_DIR"; exit 1; }
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -n "$CONFIG_DIR" ; then
|
|
||||||
test -f "$CONFIG_DIR/settings.conf" || { echo "! No settings.conf in $CONFIG_DIR"; exit 1; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Clean up build-directory
|
|
||||||
#
|
|
||||||
rm -rf "$BUILD_DIR/AppDir"
|
|
||||||
if $DO_REBUILD ; then
|
|
||||||
rm -rf "$BUILD_DIR/build"
|
|
||||||
mkdir "$BUILD_DIR/build" || { echo "! Could not create $BUILD_DIR/build for the cmake-build."; exit 1; }
|
|
||||||
else
|
|
||||||
test -d "$BUILD_DIR/build" || { echo "! No build found in $BUILD_DIR, but --skip-build is given."; exit 1; }
|
|
||||||
test -x "$BUILD_DIR/build/calamares" || { echo "! No complete build found in $BUILD_DIR/build ."; exit 1; }
|
|
||||||
fi
|
|
||||||
mkdir "$BUILD_DIR/AppDir" || { echo "! Could not create $BUILD_DIR/AppDir for the AppImage install."; exit 1; }
|
|
||||||
LOG_FILE="$BUILD_DIR/AppImage.log"
|
|
||||||
rm -f "$LOG_FILE"
|
|
||||||
{ echo "# Calamares build started" `date` ; echo "# .. build directory $BUILD_DIR"; echo "# .. log file $LOG_FILE"; } > "$LOG_FILE"
|
|
||||||
cat "$LOG_FILE"
|
|
||||||
|
|
||||||
### Python Support
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if $DO_CONDA ; then
|
|
||||||
export CONDA_CHANNELS="conda-forge;anaconda"
|
|
||||||
export CONDA_PACKAGES="gettext;py-boost"
|
|
||||||
|
|
||||||
(
|
|
||||||
cd "$BUILD_DIR" &&
|
|
||||||
./linuxdeploy-x86_64.AppImage --appdir=AppDir/ --plugin=conda
|
|
||||||
)
|
|
||||||
|
|
||||||
. "$BUILD_DIR/AppDir/usr/conda/bin/activate"
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Build Calamares
|
|
||||||
#
|
|
||||||
if $DO_REBUILD ; then
|
|
||||||
echo "# Running cmake ..."
|
|
||||||
(
|
|
||||||
cd "$BUILD_DIR/build" &&
|
|
||||||
cmake "$SRC_DIR" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib $CMAKE_ARGS
|
|
||||||
) >> "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not run CMake"; exit 1; }
|
|
||||||
echo "# Running make ..."
|
|
||||||
(
|
|
||||||
cd "$BUILD_DIR/build" &&
|
|
||||||
make -j4
|
|
||||||
) >> "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not run make"; exit 1; }
|
|
||||||
fi
|
|
||||||
echo "# Running make install ..."
|
|
||||||
(
|
|
||||||
cd "$BUILD_DIR/build" &&
|
|
||||||
make install DESTDIR=../AppDir
|
|
||||||
) >> "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not run make install"; exit 1; }
|
|
||||||
|
|
||||||
### Modify installation
|
|
||||||
#
|
|
||||||
IMAGE_DIR="$BUILD_DIR/AppDir"
|
|
||||||
|
|
||||||
# Munge the desktop file to not use absolute paths or pkexec
|
|
||||||
sed -i \
|
|
||||||
-e 's+^Exec=.*+Exec=calamares+' \
|
|
||||||
-e 's+^Name=.*+Name=Calamares+' \
|
|
||||||
"$IMAGE_DIR"/usr/share/applications/calamares.desktop
|
|
||||||
|
|
||||||
# Replace the executable with a shell-proxy
|
|
||||||
test -x "$IMAGE_DIR/usr/bin/calamares" || { echo "! Does not seem to have installed calamares"; exit 1; }
|
|
||||||
mv "$IMAGE_DIR/usr/bin/calamares" "$IMAGE_DIR/usr/bin/calamares.bin"
|
|
||||||
cat > "$IMAGE_DIR/usr/bin/calamares" <<"EOF"
|
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# Calamares proxy-script. Runs Calamares with XDG support enabled,
|
|
||||||
# and in-image XDG dirs set up so that compiled-in configuration can be used.
|
|
||||||
test -n "${XDG_DATA_DIRS}" && XDG_DATA_DIRS="${XDG_DATA_DIRS}:"
|
|
||||||
test -n "${XDG_CONFIG_DIRS}" $$ XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS}:"
|
|
||||||
export XDG_DATA_DIRS="${XDG_DATA_DIRS}${APPDIR}/usr/share/"
|
|
||||||
export XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS}${APPDIR}/etc/:${APPDIR}/usr/share/"
|
|
||||||
export PYTHONPATH="${APPDIR}/usr/lib:"
|
|
||||||
cd "$APPDIR"
|
|
||||||
exec "$APPDIR"/usr/bin/calamares.bin -X "$@"
|
|
||||||
EOF
|
|
||||||
chmod 755 "$IMAGE_DIR/usr/bin/calamares"
|
|
||||||
test -x "$IMAGE_DIR/usr/bin/calamares" || { echo "! Does not seem to have proxy for calamares"; exit 1; }
|
|
||||||
|
|
||||||
### Install additional files
|
|
||||||
#
|
|
||||||
PLUGIN_DIR=$( qmake -query QT_INSTALL_PLUGINS )
|
|
||||||
for plugin in \
|
|
||||||
libpmsfdiskbackendplugin.so \
|
|
||||||
libpmdummybackendplugin.so \
|
|
||||||
libpmlibpartedbackendplugin.so
|
|
||||||
do
|
|
||||||
# Warning, but not fatal: generally you only have two out of three available
|
|
||||||
# depending on the KPMCore version.
|
|
||||||
cp "$PLUGIN_DIR/$plugin" "$IMAGE_DIR/usr/lib" 2> /dev/null || { echo "! Could not copy KPMCore plugin $plugin"; }
|
|
||||||
done
|
|
||||||
|
|
||||||
# Install configuration files
|
|
||||||
ETC_DIR="$IMAGE_DIR"/etc/calamares
|
|
||||||
mkdir -p "$ETC_DIR"
|
|
||||||
test -d "$ETC_DIR" || { echo "! Could not create /etc/calamares in image."; exit 1; }
|
|
||||||
|
|
||||||
if test -z "$CONFIG_DIR" ; then
|
|
||||||
echo "# Using basic settings.conf"
|
|
||||||
cp "$SRC_DIR/settings.conf" "$ETC_DIR"
|
|
||||||
else
|
|
||||||
test -f "$CONFIG_DIR/settings.conf" || { echo "! No settings.conf in $CONFIG_DIR"; exit 1; }
|
|
||||||
mkdir -p "$ETC_DIR/modules"
|
|
||||||
cp "$CONFIG_DIR/settings.conf" "$ETC_DIR"
|
|
||||||
test -d "$CONFIG_DIR/modules" && cp -r "$CONFIG_DIR/modules" "$ETC_DIR"
|
|
||||||
test -d "$CONFIG_DIR/branding" && cp -r "$CONFIG_DIR/branding" "$IMAGE_DIR/usr/share/calamares"
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Build the AppImage
|
|
||||||
#
|
|
||||||
#
|
|
||||||
echo "# Building AppImage"
|
|
||||||
(
|
|
||||||
export QT_SELECT=qt5 # Otherwise might pick Qt4 in image
|
|
||||||
export LD_LIBRARY_PATH=AppDir/usr/lib # RPATH isn't set in the executable
|
|
||||||
cd "$BUILD_DIR" &&
|
|
||||||
./linuxdeploy-x86_64.AppImage --appdir=AppDir/ --plugin=qt --output=appimage
|
|
||||||
) >> "$LOG_FILE" 2>&1 || { tail -10 "$LOG_FILE" ; echo "! Could not create image"; exit 1; }
|
|
||||||
|
|
||||||
echo "# Created in $BUILD_DIR/Calamares-x86_64.AppImage"
|
|
||||||
echo "# .. log file at $LOG_FILE"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
### Database for installation
|
|
||||||
#
|
|
||||||
# URL https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
|
||||||
# URL https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
|
||||||
# URL https://raw.githubusercontent.com/TheAssassin/linuxdeploy-plugin-conda/master/linuxdeploy-plugin-conda.sh
|
|
@@ -1 +0,0 @@
|
|||||||
This has moved [to the wiki](https://github.com/calamares/calamares/wiki/Develop-Code).
|
|
135
ci/RELEASE.md
135
ci/RELEASE.md
@@ -1,135 +0,0 @@
|
|||||||
# Calamares Release Process
|
|
||||||
|
|
||||||
> Calamares releases are now rolling when-they-are-ready releases.
|
|
||||||
> Releases are made from *master* and tagged there. When, in future,
|
|
||||||
> LTS releases resume, these steps may be edited again.
|
|
||||||
>
|
|
||||||
> Most things are automated through the release script [RELEASE.sh](RELEASE.sh)
|
|
||||||
|
|
||||||
## (0) A week in advance
|
|
||||||
|
|
||||||
* 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
|
|
||||||
make test
|
|
||||||
```
|
|
||||||
Note that *all* means all-that-make-sense. The partition-manager tests need
|
|
||||||
an additional environment variable to be set for some tests, which will
|
|
||||||
destroy an attached disk. This is not always desirable. There are some
|
|
||||||
sample config-files that are empty and which fail the config-tests.
|
|
||||||
* Notify [translators][transifex]. In the dashboard there is an *Announcements*
|
|
||||||
link that you can use to send a translation announcement. Note that regular
|
|
||||||
use of `txpush.sh` will notify translators as well of any changes.
|
|
||||||
|
|
||||||
[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview
|
|
||||||
[transifex]: https://www.transifex.com/calamares/calamares/dashboard/
|
|
||||||
|
|
||||||
|
|
||||||
## (1) Preparation
|
|
||||||
|
|
||||||
* 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.
|
|
||||||
The script checks:
|
|
||||||
- for uncommitted local changes,
|
|
||||||
- if translations are up-to-date and translators
|
|
||||||
have had enough time to chase new strings,
|
|
||||||
- that the build is successful (with gcc and clang, if available),
|
|
||||||
- tests pass,
|
|
||||||
- tarball can be created,
|
|
||||||
- tarball can be signed.
|
|
||||||
On success, it prints out a suitable signature- and SHA256 blurb
|
|
||||||
for use in the release announcement.
|
|
||||||
|
|
||||||
### (2.1) Buld and Test
|
|
||||||
|
|
||||||
* Build with gcc. If available, build again with Clang and double-check
|
|
||||||
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
|
|
||||||
|
|
||||||
* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the
|
|
||||||
tag is shown as a verified tag. Do not sign -rc tags.
|
|
||||||
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`.
|
|
||||||
* Publicize on social networks.
|
|
||||||
* Close associated milestone on GitHub if this is the actual release.
|
|
||||||
* Publish blog post.
|
|
||||||
|
|
||||||
## (4) Post-Release
|
|
||||||
|
|
||||||
* Bump the version number in `CMakeLists.txt` in the `project()` command.
|
|
||||||
* Set *CALAMARES_VERSION_RC* back to 1.
|
|
||||||
* Add a placeholder entry for the next release in `CHANGES` with date
|
|
||||||
text *not released yet*.
|
|
||||||
* Commit and push that, usually with the message
|
|
||||||
*Changes: post-release housekeeping*.
|
|
||||||
|
|
||||||
```
|
|
||||||
# 3.2.XX (unreleased) #
|
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
|
||||||
- No external contributors yet
|
|
||||||
|
|
||||||
## Core ##
|
|
||||||
- No core changes yet
|
|
||||||
|
|
||||||
## Modules ##
|
|
||||||
- No module changes yet
|
|
||||||
```
|
|
161
ci/RELEASE.sh
161
ci/RELEASE.sh
@@ -1,161 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
### USAGE
|
|
||||||
#
|
|
||||||
# Release script for Calamares
|
|
||||||
#
|
|
||||||
# This attempts to perform the different steps of the RELEASE.md
|
|
||||||
# document automatically. It's not tested on other machines or
|
|
||||||
# setups other than [ade]'s development VM.
|
|
||||||
#
|
|
||||||
# Assumes that the version in CMakeLists.txt has been bumped,
|
|
||||||
# and that a release of that version is desired.
|
|
||||||
#
|
|
||||||
# None of the "update stuff" is done by this script; in preparation
|
|
||||||
# for the release, you should have already done:
|
|
||||||
# * updating the version
|
|
||||||
# * pulling translations
|
|
||||||
# * updating the language list
|
|
||||||
# * switching to the right branch
|
|
||||||
# The release can fail for various reasons: doesn't build, tests fail,
|
|
||||||
# or the string freeze has been violated.
|
|
||||||
#
|
|
||||||
# You can influence the script a little with these options:
|
|
||||||
# * `-B` do not build (before tagging)
|
|
||||||
# * `-P` do not package (tag, sign, tarball)
|
|
||||||
# * `-T` do not respect string freeze
|
|
||||||
#
|
|
||||||
# The build / package settings can be influenced via environment variables:
|
|
||||||
# * BUILD_DEFAULT set to `false` to avoid first build with gcc
|
|
||||||
# * BUILD_CLANG set to `false` to avoid second build with clang
|
|
||||||
# * BUILD_ONLY set to `true` to break after building
|
|
||||||
#
|
|
||||||
### END USAGE
|
|
||||||
|
|
||||||
test -d .git || { echo "Not at top-level." ; exit 1 ; }
|
|
||||||
test -d src/modules || { echo "No src/modules." ; exit 1 ; }
|
|
||||||
|
|
||||||
which cmake > /dev/null 2>&1 || { echo "No cmake(1) available." ; exit 1 ; }
|
|
||||||
|
|
||||||
test -z "$BUILD_DEFAULT" && BUILD_DEFAULT=true
|
|
||||||
test -z "$BUILD_CLANG" && BUILD_CLANG=true
|
|
||||||
test -z "$BUILD_ONLY" && BUILD_ONLY=false
|
|
||||||
STRING_FREEZE=true
|
|
||||||
|
|
||||||
while getopts "hBPT" opt ; do
|
|
||||||
case "$opt" in
|
|
||||||
h|\?)
|
|
||||||
sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0"
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
B)
|
|
||||||
BUILD_DEFAULT=false
|
|
||||||
BUILD_CLANG=false
|
|
||||||
;;
|
|
||||||
P)
|
|
||||||
BUILD_ONLY=true
|
|
||||||
;;
|
|
||||||
T)
|
|
||||||
STRING_FREEZE=false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
if $STRING_FREEZE ; then
|
|
||||||
sh ci/txcheck.sh || { echo "! String freeze failed." ; exit 1 ; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Setup
|
|
||||||
#
|
|
||||||
#
|
|
||||||
BUILDDIR=$(mktemp -d --suffix=-build --tmpdir=.)
|
|
||||||
|
|
||||||
### Build with default compiler
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if test "x$BUILD_DEFAULT" = "xtrue" ; then
|
|
||||||
rm -rf "$BUILDDIR"
|
|
||||||
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" && make test ) || { echo "Tests failed in $BUILDDIR." ; exit 1 ; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Build with clang
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if test "x$BUILD_CLANG" = "xtrue" ; then
|
|
||||||
if which clang++ > /dev/null 2>&1 ; then
|
|
||||||
# Do build again with clang
|
|
||||||
rm -rf "$BUILDDIR"
|
|
||||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
|
||||||
( cd "$BUILDDIR" && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; exit 1 ; }
|
|
||||||
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR (clang)." ; exit 1 ; }
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$BUILD_ONLY" = "xtrue" ; then
|
|
||||||
echo "Builds completed, release stopped. Build remains in $BUILDDIR."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -f "$BUILDDIR/CMakeCache.txt" ; then
|
|
||||||
# Some build has created it, so that's good
|
|
||||||
:
|
|
||||||
else
|
|
||||||
# Presumably -B was given; just do the cmake part
|
|
||||||
rm -rf "$BUILDDIR"
|
|
||||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
|
||||||
( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Get version number for this release
|
|
||||||
#
|
|
||||||
#
|
|
||||||
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 ; }
|
|
||||||
|
|
||||||
### Create signed tag
|
|
||||||
#
|
|
||||||
# This is the signing key ID associated with the GitHub account adriaandegroot,
|
|
||||||
# which is used to create all "verified" tags in the Calamares repo.
|
|
||||||
KEY_ID="61A7D26277E4D0DB"
|
|
||||||
git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; }
|
|
||||||
|
|
||||||
### Create the tarball
|
|
||||||
#
|
|
||||||
#
|
|
||||||
TAR_V="calamares-$V"
|
|
||||||
TAR_FILE="$TAR_V.tar.gz"
|
|
||||||
git archive -o "$TAR_FILE" --prefix "$TAR_V/" "v$V" || { echo "Could not create tarball." ; exit 1 ; }
|
|
||||||
test -f "$TAR_FILE" || { echo "Tarball was not created." ; exit 1 ; }
|
|
||||||
SHA256=$(sha256sum "$TAR_FILE" | cut -d" " -f1)
|
|
||||||
|
|
||||||
### Build the tarball
|
|
||||||
#
|
|
||||||
#
|
|
||||||
D=$(date +%Y%m%d-%H%M%S)
|
|
||||||
TMPDIR=$(mktemp -d --suffix="-calamares-$D")
|
|
||||||
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 ; }
|
|
||||||
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 ; }
|
|
||||||
|
|
||||||
### Cleanup
|
|
||||||
#
|
|
||||||
rm -rf "$BUILDDIR" # From test-builds
|
|
||||||
rm -rf "$TMPDIR" # From tarball
|
|
||||||
|
|
||||||
### Print subsequent instructions
|
|
||||||
#
|
|
||||||
#
|
|
||||||
cat <<EOF
|
|
||||||
# Next steps for this release:
|
|
||||||
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
|
|
||||||
# Announce via https://github.com/calamares/calamares/releases/new
|
|
||||||
# SHA256: $SHA256
|
|
||||||
EOF
|
|
||||||
|
|
||||||
exit 0
|
|
@@ -1,56 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Calls astyle with settings matching Calamares coding style
|
|
||||||
# Requires astyle >= 2.04 and clang-format-7
|
|
||||||
#
|
|
||||||
# You can pass in directory names, in which case the files
|
|
||||||
# in that directory (NOT below it) are processed.
|
|
||||||
#
|
|
||||||
LANG=C
|
|
||||||
LC_ALL=C
|
|
||||||
LC_NUMERIC=C
|
|
||||||
export LANG LC_ALL LC_NUMERIC
|
|
||||||
|
|
||||||
AS=$( which astyle )
|
|
||||||
|
|
||||||
CF_VERSIONS="clang-format-7 clang-format-8 clang-format70 clang-format80 clang-format-9.0.1 clang-format"
|
|
||||||
for _cf in $CF_VERSIONS
|
|
||||||
do
|
|
||||||
# Not an error if this particular clang-format isn't found
|
|
||||||
CF=$( which $_cf 2> /dev/null || true )
|
|
||||||
test -n "$CF" && break
|
|
||||||
done
|
|
||||||
|
|
||||||
test -n "$AS" || { echo "! No astyle 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 "$CF" || { echo "! $CF is not executable."; exit 1 ; }
|
|
||||||
|
|
||||||
expr `"$CF" --version | tr -dc '[^.0-9]' | cut -d . -f 1` '<' 10 > /dev/null || { echo "! $CF is version 10 or later, needs different .clang-format" ; exit 1 ; }
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
any_dirs=no
|
|
||||||
for d in "$@"
|
|
||||||
do
|
|
||||||
test -d "$d" && any_dirs=yes
|
|
||||||
done
|
|
||||||
|
|
||||||
style_some()
|
|
||||||
{
|
|
||||||
$AS --options=$(dirname $0)/astylerc --quiet "$@"
|
|
||||||
$CF -i -style=file "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
if test "x$any_dirs" = "xyes" ; then
|
|
||||||
for d in "$@"
|
|
||||||
do
|
|
||||||
if test -d "$d" ; then
|
|
||||||
style_some $( find "$d" -maxdepth 1 -type f -name '*.cpp' -o -name '*.h' )
|
|
||||||
else
|
|
||||||
style_some "$d"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
style_some "$@"
|
|
||||||
fi
|
|
@@ -1,128 +0,0 @@
|
|||||||
#! /usr/bin/env python3
|
|
||||||
#
|
|
||||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
# License-Filename: LICENSES/BSD2
|
|
||||||
#
|
|
||||||
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 -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.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# 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 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)
|
|
||||||
|
|
||||||
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)
|
|
@@ -1,6 +0,0 @@
|
|||||||
/* Model file for Coverity checker.
|
|
||||||
See https://scan.coverity.com/tune
|
|
||||||
|
|
||||||
Calamares doesn't seem to geenerate any false positives,
|
|
||||||
so the model-file is empty.
|
|
||||||
*/
|
|
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cd "$WORKSPACE"
|
|
||||||
cppcheck --enable=all --inconclusive --xml --xml-version=2 src 2> cppcheck.xml
|
|
@@ -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="calamares-`date -u +%Y%m%d`" \
|
|
||||||
--form description="calamares 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
|
|
155
ci/txcheck.sh
155
ci/txcheck.sh
@@ -1,155 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
### LICENSE
|
|
||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
# SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot <groot@kde.org>
|
|
||||||
#
|
|
||||||
# This file is Free Software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the 2-clause BSD License.
|
|
||||||
#
|
|
||||||
### END LICENSE
|
|
||||||
|
|
||||||
### USAGE
|
|
||||||
#
|
|
||||||
# Does the translation tag (from a previous txpush) exist?
|
|
||||||
# This assumes that the release host has also locally done
|
|
||||||
# a translations push, which works for the current development
|
|
||||||
# workflow .. but it could be improved by looking for one of
|
|
||||||
# the typical txpush log messages instead of the tag.
|
|
||||||
#
|
|
||||||
# Use --cleanup as an argument to clean things up.
|
|
||||||
#
|
|
||||||
# Normal use:
|
|
||||||
# $ sh ci/txcheck.sh
|
|
||||||
# If there are differences, fix them and then clean up:
|
|
||||||
# $ sh ci/txcheck.sh --cleanup
|
|
||||||
#
|
|
||||||
### END USAGE
|
|
||||||
|
|
||||||
# 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"
|
|
||||||
|
|
||||||
### COMMAND ARGUMENTS
|
|
||||||
#
|
|
||||||
# We need to define tx_cleanup for the --cleanup argument, although it's
|
|
||||||
# normally used much later in the script.
|
|
||||||
tx_cleanup()
|
|
||||||
{
|
|
||||||
# Cleanup artifacs of checking
|
|
||||||
git worktree remove --force build-txcheck-head
|
|
||||||
git worktree remove --force build-txcheck-prev
|
|
||||||
git branch -D build-txcheck-head > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
if test "x$1" = "x--cleanup" ; then
|
|
||||||
tx_cleanup
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
if test "x$1" = "x--help" ; then
|
|
||||||
sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0"
|
|
||||||
fi
|
|
||||||
test -z "$1" || { echo "! Usage: txcheck.sh [--cleanup]" ; exit 1 ; }
|
|
||||||
|
|
||||||
|
|
||||||
### FIND EXECUTABLES
|
|
||||||
#
|
|
||||||
#
|
|
||||||
XMLLINT=""
|
|
||||||
for _xmllint in xmllint
|
|
||||||
do
|
|
||||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
|
||||||
test -n "$XMLLINT" && break
|
|
||||||
done
|
|
||||||
|
|
||||||
# Distinguish GNU date from BSD date
|
|
||||||
if date +%s -d "1 week ago" > /dev/null 2>&1 ; then
|
|
||||||
last_week() { date +%s -d "1 week ago" ; }
|
|
||||||
else
|
|
||||||
last_week() { date -v1w +%s; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Distinguish GNU SHA executables from BSD ones
|
|
||||||
if which sha256sum > /dev/null 2>&1 ; then
|
|
||||||
SHA256=sha256sum
|
|
||||||
else
|
|
||||||
SHA256=sha256
|
|
||||||
fi
|
|
||||||
|
|
||||||
### CHECK WORKING DIRECTORY
|
|
||||||
#
|
|
||||||
#
|
|
||||||
if git describe translation > /dev/null 2>&1 ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "! No 'translation' tag exists for enforcing the string-freeze."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# The tag exists, so now check that there's no unsaved changes
|
|
||||||
if test `git describe` = `git describe --dirty` ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
# Don't want any local changes, since those won't be
|
|
||||||
# reflected in the worktrees and we might miss a string change.
|
|
||||||
echo "! There are local changes."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# No unsaved changes; enforce a string freeze of one week
|
|
||||||
DATE_PREV=$( git log -1 translation --date=unix | sed -e '/^Date:/s+.*:++p' -e d )
|
|
||||||
DATE_HEAD=$( last_week )
|
|
||||||
test "$DATE_PREV" -le "$DATE_HEAD" || { echo "! Translation tag has not aged enough." ; git log -1 translation ; exit 1 ; }
|
|
||||||
|
|
||||||
# Tag is good, check that necessary files exist. The list of
|
|
||||||
# files is hard-coded, but should match what is in the Transifex config.
|
|
||||||
test -f ".tx/config" || { echo "! No Transifex configuration is present." ; exit 1 ; }
|
|
||||||
for f in $TX_FILE_LIST ; do
|
|
||||||
test -f $f || { echo "! Translation file '$f' does not exist." ; exit 1 ; }
|
|
||||||
done
|
|
||||||
|
|
||||||
### COMPARE TRANSLATIONS
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
# The state of translations; assume that sha256 is enough
|
|
||||||
# to distinguish changed translations when we cat all the
|
|
||||||
# string sources together.
|
|
||||||
tx_sum()
|
|
||||||
{
|
|
||||||
CURDIR=`pwd`
|
|
||||||
WORKTREE_NAME="$1"
|
|
||||||
WORKTREE_TAG="$2"
|
|
||||||
|
|
||||||
git worktree add $WORKTREE_NAME $WORKTREE_TAG > /dev/null 2>&1 || { echo "! Could not create worktree." ; exit 1 ; }
|
|
||||||
( cd $WORKTREE_NAME && sh "$CURDIR"/ci/txpush.sh --no-tx ) > /dev/null 2>&1 || { echo "! Could not re-create translations." ; exit 1 ; }
|
|
||||||
|
|
||||||
# Remove linenumbers from .ts (XML) and .pot
|
|
||||||
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
|
|
||||||
|
|
||||||
_SUM=$( cd $WORKTREE_NAME && cat $TX_FILE_LIST | $SHA256 )
|
|
||||||
echo "$_SUM"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check from the translation tag as well
|
|
||||||
HEAD_SUM=`tx_sum build-txcheck-head ""` || { echo "$HEAD_SUM" ; exit 1 ; }
|
|
||||||
PREV_SUM=`tx_sum build-txcheck-prev translation` || { echo "$HEAD_SUM" ; exit 1 ; }
|
|
||||||
|
|
||||||
# An error message will have come from the shell function
|
|
||||||
test -d build-txcheck-head || { echo "$HEAD_SUM" ; exit 1 ; }
|
|
||||||
test -d build-txcheck-prev || { echo "$PREV_SUM" ; exit 1 ; }
|
|
||||||
|
|
||||||
if test "$HEAD_SUM" = "$PREV_SUM" ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "! Translations have changed."
|
|
||||||
for f in $TX_FILE_LIST ; do
|
|
||||||
echo "! $f"
|
|
||||||
diff -u build-txcheck-prev/$f build-txcheck-head/$f
|
|
||||||
done
|
|
||||||
echo "! Run 'txcheck.sh --cleanup' to clean-up before next run"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
tx_cleanup
|
|
||||||
exit 0
|
|
142
ci/txpull.sh
142
ci/txpull.sh
@@ -1,142 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
### LICENSE
|
|
||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# This file is Free Software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the 2-clause BSD License.
|
|
||||||
#
|
|
||||||
### END LICENSE
|
|
||||||
|
|
||||||
### USAGE
|
|
||||||
#
|
|
||||||
# Fetch the Transifex translations for Calamares and incorporate them
|
|
||||||
# into the source tree, adding commits of the different files.
|
|
||||||
#
|
|
||||||
# Run this (occasionally) at the top-level directory to get
|
|
||||||
# new translations. See also CMakeLists.txt and ci/txstats.py
|
|
||||||
# for update instructions.
|
|
||||||
#
|
|
||||||
### END USAGE
|
|
||||||
|
|
||||||
### SANITY CHECKING
|
|
||||||
#
|
|
||||||
# The script needs a .tx/config to talk to the Transifex server;
|
|
||||||
# it also checks that it is run from the top-level of a Calamares
|
|
||||||
# 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)
|
|
||||||
#
|
|
||||||
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 "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
|
||||||
|
|
||||||
|
|
||||||
### FIND EXECUTABLES
|
|
||||||
#
|
|
||||||
#
|
|
||||||
XMLLINT=""
|
|
||||||
for _xmllint in xmllint
|
|
||||||
do
|
|
||||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
|
||||||
test -n "$XMLLINT" && break
|
|
||||||
done
|
|
||||||
# XMLLINT is optional
|
|
||||||
|
|
||||||
|
|
||||||
### FETCH TRANSLATIONS
|
|
||||||
#
|
|
||||||
# Use Transifex client to get translations; this depends on the
|
|
||||||
# .tx/config file to locate files, and overwrites them in the
|
|
||||||
# filesystem with new (merged) translations.
|
|
||||||
export QT_SELECT=5
|
|
||||||
tx pull --force --source --all
|
|
||||||
|
|
||||||
|
|
||||||
### CLEANUP TRANSLATIONS
|
|
||||||
#
|
|
||||||
# Some languages have been deprecated. They may still exist in Transifex,
|
|
||||||
# so clean them up after pulling.
|
|
||||||
#
|
|
||||||
drop_language() {
|
|
||||||
rm -rf lang/python/"$1" src/modules/dummypythonqt/lang/"$1" lang/calamares_"$1".ts
|
|
||||||
grep -v "\\[$1]" calamares.desktop > calamares.desktop.new
|
|
||||||
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.
|
|
||||||
#
|
|
||||||
{ cat calamares.desktop.in ; grep "\\[[a-zA-Z_@]*]=" calamares.desktop ; } > calamares.desktop.new
|
|
||||||
mv calamares.desktop.new calamares.desktop
|
|
||||||
|
|
||||||
# And fixup the XML files like in txpush.sh
|
|
||||||
if test -n "$XMLLINT" ; then
|
|
||||||
for TS_FILE in lang/calamares_*.ts
|
|
||||||
do
|
|
||||||
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
### COMMIT TRANSLATIONS
|
|
||||||
#
|
|
||||||
# Produce multiple commits (for the various parts of the i18n
|
|
||||||
# infrastructure used by Calamares) of the updated translations.
|
|
||||||
# Try to be a little smart about not committing trivial changes.
|
|
||||||
|
|
||||||
# Who is credited with these CI commits
|
|
||||||
AUTHOR="--author='Calamares CI <groot@kde.org>'"
|
|
||||||
# Message to put after the module name
|
|
||||||
BOILERPLATE="Automatic merge of Transifex translations"
|
|
||||||
|
|
||||||
git add --verbose lang/calamares*.ts
|
|
||||||
git commit "$AUTHOR" --message="i18n: [calamares] $BOILERPLATE" | true
|
|
||||||
|
|
||||||
rm -f lang/desktop*.desktop
|
|
||||||
awk '
|
|
||||||
BEGIN {skip=0;}
|
|
||||||
/^# Translations/ {skip=1;}
|
|
||||||
{if (!skip || (length($0)>1 && $0 != "# Translations")) {
|
|
||||||
skip=0; print $0;
|
|
||||||
}}' < calamares.desktop > calamares.desktop.new
|
|
||||||
mv calamares.desktop.new calamares.desktop
|
|
||||||
git add --verbose calamares.desktop
|
|
||||||
git commit "$AUTHOR" --message="i18n: [desktop] $BOILERPLATE" | true
|
|
||||||
|
|
||||||
# Transifex updates the PO-Created timestamp also when nothing interesting
|
|
||||||
# has happened, so drop the files which have just 1 line changed (the
|
|
||||||
# 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 --
|
|
||||||
|
|
||||||
# Go through the Python modules; those with a lang/ subdir have their
|
|
||||||
# own complete gettext-based setup.
|
|
||||||
for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
|
||||||
FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f)
|
|
||||||
if test -n "$FILES" ; then
|
|
||||||
MODULE_NAME=$(basename ${MODULE_DIR})
|
|
||||||
if [ -d ${MODULE_DIR}/lang ]; then
|
|
||||||
# Convert PO files to MO files
|
|
||||||
for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do
|
|
||||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
|
||||||
msgfmt -o ${POFILE%.po}.mo $POFILE
|
|
||||||
done
|
|
||||||
git add --verbose ${MODULE_DIR}/lang/*
|
|
||||||
git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for POFILE in $(find lang -name "python.po") ; do
|
|
||||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
|
||||||
msgfmt -o ${POFILE%.po}.mo $POFILE
|
|
||||||
done
|
|
||||||
git add --verbose lang/python*
|
|
||||||
git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true
|
|
147
ci/txpush.sh
147
ci/txpush.sh
@@ -1,147 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
### LICENSE
|
|
||||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
|
||||||
#
|
|
||||||
# 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>
|
|
||||||
#
|
|
||||||
# This file is Free Software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the 2-clause BSD License.
|
|
||||||
#
|
|
||||||
### END LICENSE
|
|
||||||
|
|
||||||
### USAGE
|
|
||||||
#
|
|
||||||
# Extract translations from Calamares source and send them
|
|
||||||
# to Transifex. Also (forcibly) updates the git "translation"
|
|
||||||
# tag to document that source texts were updated and sent;
|
|
||||||
# this is used by txcheck.sh to ensure that there's enough
|
|
||||||
# time between updates and releases, and that strings don't
|
|
||||||
# change between updates and releases.
|
|
||||||
#
|
|
||||||
# Run this at the top-level.
|
|
||||||
#
|
|
||||||
# Use the --no-tx option to do the extraction, but not the
|
|
||||||
# pushing-to-Transifex part. This can be useful to check for
|
|
||||||
# new strings or when testing the tools themselves.
|
|
||||||
#
|
|
||||||
### END USAGE
|
|
||||||
|
|
||||||
### SANITY CHECKING
|
|
||||||
#
|
|
||||||
# The script needs a .tx/config to talk to the Transifex server;
|
|
||||||
# it also checks that it is run from the top-level of a Calamares
|
|
||||||
# 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)
|
|
||||||
#
|
|
||||||
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 "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
|
||||||
|
|
||||||
if test "x$1" = "x--no-tx" ; then
|
|
||||||
# tx is the transifex command -- eat its arguments and do nothing
|
|
||||||
tx() {
|
|
||||||
echo "Skipped tx $*"
|
|
||||||
}
|
|
||||||
# txtag is used to tag in git to measure changes -- skip it too
|
|
||||||
txtag() {
|
|
||||||
echo "Skipped tx tagging."
|
|
||||||
}
|
|
||||||
else
|
|
||||||
# tx is the regular transifex command
|
|
||||||
# txtag is used to tag in git to measure changes
|
|
||||||
txtag() {
|
|
||||||
git tag -f translation
|
|
||||||
git push --force origin translation
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
### FIND EXECUTABLES
|
|
||||||
#
|
|
||||||
#
|
|
||||||
LUPDATE=""
|
|
||||||
for _lupdate in lupdate-qt5 lupdate
|
|
||||||
do
|
|
||||||
export QT_SELECT=5
|
|
||||||
$_lupdate -version > /dev/null 2>&1 || export QT_SELECT=qt5
|
|
||||||
$_lupdate -version > /dev/null 2>&1 && LUPDATE=$_lupdate
|
|
||||||
test -n "$LUPDATE" && break
|
|
||||||
done
|
|
||||||
test -n "$LUPDATE" || { echo "! No working lupdate" ; lupdate -version ; exit 1 ; }
|
|
||||||
|
|
||||||
XMLLINT=""
|
|
||||||
for _xmllint in xmllint
|
|
||||||
do
|
|
||||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
|
||||||
test -n "$XMLLINT" && break
|
|
||||||
done
|
|
||||||
# XMLLINT is optional
|
|
||||||
|
|
||||||
|
|
||||||
### CREATE TRANSLATIONS
|
|
||||||
#
|
|
||||||
# Use local tools (depending on type of source) to create translation
|
|
||||||
# sources, then push to Transifex
|
|
||||||
|
|
||||||
# Don't pull branding translations in,
|
|
||||||
# those are done separately.
|
|
||||||
_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml"
|
|
||||||
$LUPDATE -no-obsolete $_srcdirs -ts lang/calamares_en.ts
|
|
||||||
# Updating the TZ only needs to happen when the TZ themselves are updated,
|
|
||||||
# very-very-rarely.
|
|
||||||
# $LUPDATE -no-obsolete -extensions cxxtr src/libcalamares/locale -ts lang/tz_en.ts
|
|
||||||
|
|
||||||
if test -n "$XMLLINT" ; then
|
|
||||||
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"
|
|
||||||
fi
|
|
||||||
|
|
||||||
tx push --source --no-interactive -r calamares.calamares
|
|
||||||
tx push --source --no-interactive -r calamares.fdo
|
|
||||||
|
|
||||||
|
|
||||||
### PYTHON MODULES
|
|
||||||
#
|
|
||||||
# The Python tooling depends on the underlying distro to provide
|
|
||||||
# gettext, and handles two cases:
|
|
||||||
#
|
|
||||||
# - python modules with their own lang/ subdir, for larger translations
|
|
||||||
# - python modules without lang/, which use one shared catalog
|
|
||||||
#
|
|
||||||
|
|
||||||
PYGETTEXT="xgettext --keyword=_n:1,2 -L python"
|
|
||||||
|
|
||||||
SHARED_PYTHON=""
|
|
||||||
for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
|
||||||
FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f)
|
|
||||||
if test -n "$FILES" ; then
|
|
||||||
MODULE_NAME=$(basename ${MODULE_DIR})
|
|
||||||
if [ -d ${MODULE_DIR}/lang ]; then
|
|
||||||
${PYGETTEXT} -p ${MODULE_DIR}/lang -d ${MODULE_NAME} -o ${MODULE_NAME}.pot ${MODULE_DIR}/*.py
|
|
||||||
POTFILE="${MODULE_DIR}/lang/${MODULE_NAME}.pot"
|
|
||||||
if [ -f "$POTFILE" ]; then
|
|
||||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE"
|
|
||||||
tx set -r calamares.${MODULE_NAME} --source -l en "$POTFILE"
|
|
||||||
tx push --source --no-interactive -r calamares.${MODULE_NAME}
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
SHARED_PYTHON="$SHARED_PYTHON $FILES"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -n "$SHARED_PYTHON" ; then
|
|
||||||
${PYGETTEXT} -p lang -d python -o python.pot $SHARED_PYTHON
|
|
||||||
POTFILE="lang/python.pot"
|
|
||||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE"
|
|
||||||
tx set -r calamares.python --source -l en "$POTFILE"
|
|
||||||
tx push --source --no-interactive -r calamares.python
|
|
||||||
fi
|
|
||||||
|
|
||||||
txtag
|
|
||||||
exit 0
|
|
@@ -1,44 +0,0 @@
|
|||||||
#! /usr/bin/env python3
|
|
||||||
#
|
|
||||||
# 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)
|
|
114
ci/txstats.py
114
ci/txstats.py
@@ -1,114 +0,0 @@
|
|||||||
#! /usr/bin/env python3
|
|
||||||
#
|
|
||||||
# Uses the Transifex API to get a list of enabled languages,
|
|
||||||
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
|
||||||
#
|
|
||||||
# This is a Python3 script.
|
|
||||||
#
|
|
||||||
# Run it with a -v command-line option to get extra output on
|
|
||||||
# actual translation percentages.
|
|
||||||
import sys
|
|
||||||
|
|
||||||
def get_tx_credentials():
|
|
||||||
"""
|
|
||||||
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
|
|
||||||
|
|
||||||
def output_langs(all_langs, label, filterfunc):
|
|
||||||
"""
|
|
||||||
Output (via print) all of the languages in @p all_langs
|
|
||||||
that satisfy the translation-percentage filter @p filterfunc.
|
|
||||||
Prints a CMake set() command with the @p label as part
|
|
||||||
of the variable name.
|
|
||||||
|
|
||||||
Performs line-wrapping.
|
|
||||||
"""
|
|
||||||
these_langs = [l for s, l in all_langs if filterfunc(s)]
|
|
||||||
out = " ".join(["set( _tx_%s" % label, " ".join(sorted(these_langs)), ")"])
|
|
||||||
width = 68
|
|
||||||
prefix = ""
|
|
||||||
|
|
||||||
while len(out) > width - len(prefix):
|
|
||||||
chunk = out[:out[:width].rfind(" ")]
|
|
||||||
print("%s%s" % (prefix, chunk))
|
|
||||||
out = out[len(chunk)+1:]
|
|
||||||
prefix = " "
|
|
||||||
print("%s%s" % (prefix, out))
|
|
||||||
|
|
||||||
def get_tx_stats(token, verbose):
|
|
||||||
"""
|
|
||||||
Does an API request to Transifex with the given API @p token, getting
|
|
||||||
the translation statistics for the main body of texts. Then prints
|
|
||||||
out CMake settings to replace the _tx_* variables in CMakeLists.txt
|
|
||||||
according to standard criteria.
|
|
||||||
|
|
||||||
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/", 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,
|
|
||||||
# regardless of their completion status: this can have various reasons.
|
|
||||||
#
|
|
||||||
# Note that Esperanto (eo) is special-cased in CMakeLists.txt
|
|
||||||
# during the build; recent Qt releases *do* support the language,
|
|
||||||
# and it's at-the-least ok.
|
|
||||||
incomplete_languages = (
|
|
||||||
"eo", # Not supported by QLocale < 5.12.1
|
|
||||||
)
|
|
||||||
|
|
||||||
all_langs = []
|
|
||||||
|
|
||||||
j = r.json()
|
|
||||||
languages = j["stats"]
|
|
||||||
print("# Total %d languages" % len(languages))
|
|
||||||
for lang_name in languages:
|
|
||||||
if lang_name in suppressed_languages:
|
|
||||||
continue
|
|
||||||
stats = languages[lang_name]["translated"]["percentage"]
|
|
||||||
# Make the by-definition-incomplete languages have a percentage
|
|
||||||
# lower than zero; this way they end up sorted (in -v output)
|
|
||||||
# at the bottom but you can still determine the "actual" percentage.
|
|
||||||
if lang_name in incomplete_languages:
|
|
||||||
stats = -stats
|
|
||||||
all_langs.append((stats, lang_name))
|
|
||||||
|
|
||||||
if verbose:
|
|
||||||
for s, l in sorted(all_langs, reverse=True):
|
|
||||||
print("# %16s\t%6.2f" % (l, s * 100.0))
|
|
||||||
output_langs(all_langs, "complete", lambda s : s == 1.0)
|
|
||||||
output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75)
|
|
||||||
output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05)
|
|
||||||
output_langs(all_langs, "incomplete", lambda s : 0.05 > s)
|
|
||||||
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
verbose = (sys.argv[-1] == "-v")
|
|
||||||
cred = get_tx_credentials()
|
|
||||||
if cred:
|
|
||||||
return get_tx_stats(cred, verbose)
|
|
||||||
else:
|
|
||||||
print("! Could not find API token in ~/.transifexrc")
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sys.exit(main())
|
|
@@ -1,34 +0,0 @@
|
|||||||
# $FreeBSD$
|
|
||||||
|
|
||||||
PORTNAME= calamares
|
|
||||||
DISTVERSION= 3.2.25
|
|
||||||
CATEGORIES= sysutils
|
|
||||||
MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/v${DISTVERSION}/
|
|
||||||
|
|
||||||
MAINTAINER= adridg@FreeBSD.org
|
|
||||||
COMMENT= GUI System installer and OEM configurator
|
|
||||||
|
|
||||||
LICENSE= GPLv3
|
|
||||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
|
||||||
|
|
||||||
LIB_DEPENDS= libyaml-cpp.so:devel/yaml-cpp \
|
|
||||||
libpwquality.so:security/libpwquality \
|
|
||||||
libboost_python${PYTHON_SUFFIX}.so:devel/boost-python-libs
|
|
||||||
|
|
||||||
USES= cmake compiler:c++17-lang gettext kde:5 pkgconfig \
|
|
||||||
python:3.3+ qt:5
|
|
||||||
USE_QT= concurrent core dbus declarative gui \
|
|
||||||
network quickcontrols2 svg widgets xml \
|
|
||||||
buildtools_build linguist_build qmake_build
|
|
||||||
USE_KDE= coreaddons dbusaddons parts service \
|
|
||||||
ecm_build
|
|
||||||
USE_LDCONFIG= yes
|
|
||||||
|
|
||||||
CMAKE_OFF= WITH_KF5Crash \
|
|
||||||
INSTALL_CONFIG \
|
|
||||||
INSTALL_COMPLETION \
|
|
||||||
INSTALL_POLKIT
|
|
||||||
CMAKE_ON= CMAKE_DISABLE_FIND_PACKAGE_KPMcore
|
|
||||||
CMAKE_ARGS= -DSKIP_MODULES="webview"
|
|
||||||
|
|
||||||
.include <bsd.port.mk>
|
|
@@ -1,3 +0,0 @@
|
|||||||
TIMESTAMP = 1592339404
|
|
||||||
SHA256 (calamares-3.2.25.tar.gz) = 797ce33db7d4e4c06bbccef95f6c4023f7628e91bd142896695565fed4ae8c4b
|
|
||||||
SIZE (calamares-3.2.25.tar.gz) = 3580197
|
|
@@ -1,14 +0,0 @@
|
|||||||
Calamares is an installer framework. By design it is very customizable,
|
|
||||||
in order to satisfy a wide variety of needs and use cases.
|
|
||||||
|
|
||||||
Calamares aims to be easy, usable, beautiful, pragmatic, inclusive and
|
|
||||||
distribution-agnostic.
|
|
||||||
|
|
||||||
Got a Linux distribution but no system installer? Grab Calamares, mix
|
|
||||||
and match any number of Calamares modules (or write your own in Python
|
|
||||||
or C++), throw together some branding, package it up and you are ready
|
|
||||||
to ship!
|
|
||||||
|
|
||||||
(The above applies to FreeBSD as well)
|
|
||||||
|
|
||||||
WWW: https://calamares.io/
|
|
@@ -1,224 +0,0 @@
|
|||||||
bin/calamares
|
|
||||||
include/libcalamares/CalamaresConfig.h
|
|
||||||
include/libcalamares/CppJob.h
|
|
||||||
include/libcalamares/DllMacro.h
|
|
||||||
include/libcalamares/GlobalStorage.h
|
|
||||||
include/libcalamares/Job.h
|
|
||||||
include/libcalamares/JobExample.h
|
|
||||||
include/libcalamares/JobQueue.h
|
|
||||||
include/libcalamares/ProcessJob.h
|
|
||||||
include/libcalamares/PythonHelper.h
|
|
||||||
include/libcalamares/PythonJob.h
|
|
||||||
include/libcalamares/PythonJobApi.h
|
|
||||||
include/libcalamares/Settings.h
|
|
||||||
include/libcalamares/utils/BoostPython.h
|
|
||||||
include/libcalamares/utils/CalamaresUtilsSystem.h
|
|
||||||
include/libcalamares/utils/CommandList.h
|
|
||||||
include/libcalamares/utils/Dirs.h
|
|
||||||
include/libcalamares/utils/Entropy.h
|
|
||||||
include/libcalamares/utils/Logger.h
|
|
||||||
include/libcalamares/utils/NamedEnum.h
|
|
||||||
include/libcalamares/utils/NamedSuffix.h
|
|
||||||
include/libcalamares/utils/PluginFactory.h
|
|
||||||
include/libcalamares/utils/RAII.h
|
|
||||||
include/libcalamares/utils/Retranslator.h
|
|
||||||
include/libcalamares/utils/String.h
|
|
||||||
include/libcalamares/utils/Tests.h
|
|
||||||
include/libcalamares/utils/UMask.h
|
|
||||||
include/libcalamares/utils/Units.h
|
|
||||||
include/libcalamares/utils/Variant.h
|
|
||||||
include/libcalamares/utils/Yaml.h
|
|
||||||
include/libcalamares/utils/moc-warnings.h
|
|
||||||
lib/calamares/libcalamares.so
|
|
||||||
lib/calamares/modules/bootloader/main.py
|
|
||||||
lib/calamares/modules/bootloader/module.desc
|
|
||||||
lib/calamares/modules/bootloader/test.yaml
|
|
||||||
lib/calamares/modules/contextualprocess/libcalamares_job_contextualprocess.so
|
|
||||||
lib/calamares/modules/contextualprocess/module.desc
|
|
||||||
lib/calamares/modules/displaymanager/main.py
|
|
||||||
lib/calamares/modules/displaymanager/module.desc
|
|
||||||
lib/calamares/modules/dracut/main.py
|
|
||||||
lib/calamares/modules/dracut/module.desc
|
|
||||||
lib/calamares/modules/dracutlukscfg/libcalamares_job_dracutlukscfg.so
|
|
||||||
lib/calamares/modules/dracutlukscfg/module.desc
|
|
||||||
lib/calamares/modules/dummycpp/libcalamares_job_dummycpp.so
|
|
||||||
lib/calamares/modules/dummycpp/module.desc
|
|
||||||
lib/calamares/modules/dummyprocess/module.desc
|
|
||||||
lib/calamares/modules/dummypython/main.py
|
|
||||||
lib/calamares/modules/dummypython/module.desc
|
|
||||||
lib/calamares/modules/finished/libcalamares_viewmodule_finished.so
|
|
||||||
lib/calamares/modules/finished/module.desc
|
|
||||||
lib/calamares/modules/fstab/main.py
|
|
||||||
lib/calamares/modules/fstab/module.desc
|
|
||||||
lib/calamares/modules/fstab/test.yaml
|
|
||||||
lib/calamares/modules/grubcfg/main.py
|
|
||||||
lib/calamares/modules/grubcfg/module.desc
|
|
||||||
lib/calamares/modules/hostinfo/libcalamares_job_hostinfo.so
|
|
||||||
lib/calamares/modules/hostinfo/module.desc
|
|
||||||
lib/calamares/modules/hwclock/main.py
|
|
||||||
lib/calamares/modules/hwclock/module.desc
|
|
||||||
lib/calamares/modules/initcpio/libcalamares_job_initcpio.so
|
|
||||||
lib/calamares/modules/initcpio/module.desc
|
|
||||||
lib/calamares/modules/initcpiocfg/main.py
|
|
||||||
lib/calamares/modules/initcpiocfg/module.desc
|
|
||||||
lib/calamares/modules/initramfs/libcalamares_job_initramfs.so
|
|
||||||
lib/calamares/modules/initramfs/module.desc
|
|
||||||
lib/calamares/modules/initramfscfg/encrypt_hook
|
|
||||||
lib/calamares/modules/initramfscfg/encrypt_hook_nokey
|
|
||||||
lib/calamares/modules/initramfscfg/main.py
|
|
||||||
lib/calamares/modules/initramfscfg/module.desc
|
|
||||||
lib/calamares/modules/interactiveterminal/libcalamares_viewmodule_interactiveterminal.so
|
|
||||||
lib/calamares/modules/interactiveterminal/module.desc
|
|
||||||
lib/calamares/modules/keyboard/libcalamares_viewmodule_keyboard.so
|
|
||||||
lib/calamares/modules/keyboard/module.desc
|
|
||||||
lib/calamares/modules/keyboardq/libcalamares_viewmodule_keyboardq.so
|
|
||||||
lib/calamares/modules/keyboardq/module.desc
|
|
||||||
lib/calamares/modules/license/libcalamares_viewmodule_license.so
|
|
||||||
lib/calamares/modules/license/module.desc
|
|
||||||
lib/calamares/modules/locale/libcalamares_viewmodule_locale.so
|
|
||||||
lib/calamares/modules/locale/module.desc
|
|
||||||
lib/calamares/modules/localecfg/main.py
|
|
||||||
lib/calamares/modules/localecfg/module.desc
|
|
||||||
lib/calamares/modules/localeq/libcalamares_viewmodule_localeq.so
|
|
||||||
lib/calamares/modules/localeq/module.desc
|
|
||||||
lib/calamares/modules/luksbootkeyfile/libcalamares_job_luksbootkeyfile.so
|
|
||||||
lib/calamares/modules/luksbootkeyfile/module.desc
|
|
||||||
lib/calamares/modules/luksopenswaphookcfg/main.py
|
|
||||||
lib/calamares/modules/luksopenswaphookcfg/module.desc
|
|
||||||
lib/calamares/modules/machineid/libcalamares_job_machineid.so
|
|
||||||
lib/calamares/modules/machineid/module.desc
|
|
||||||
lib/calamares/modules/mount/main.py
|
|
||||||
lib/calamares/modules/mount/module.desc
|
|
||||||
lib/calamares/modules/mount/test.yaml
|
|
||||||
lib/calamares/modules/netinstall/libcalamares_viewmodule_netinstall.so
|
|
||||||
lib/calamares/modules/netinstall/module.desc
|
|
||||||
lib/calamares/modules/networkcfg/main.py
|
|
||||||
lib/calamares/modules/networkcfg/module.desc
|
|
||||||
lib/calamares/modules/notesqml/libcalamares_viewmodule_notesqml.so
|
|
||||||
lib/calamares/modules/notesqml/module.desc
|
|
||||||
lib/calamares/modules/oemid/libcalamares_viewmodule_oemid.so
|
|
||||||
lib/calamares/modules/oemid/module.desc
|
|
||||||
lib/calamares/modules/openrcdmcryptcfg/main.py
|
|
||||||
lib/calamares/modules/openrcdmcryptcfg/module.desc
|
|
||||||
lib/calamares/modules/packagechooser/libcalamares_viewmodule_packagechooser.so
|
|
||||||
lib/calamares/modules/packagechooser/module.desc
|
|
||||||
lib/calamares/modules/packages/main.py
|
|
||||||
lib/calamares/modules/packages/module.desc
|
|
||||||
lib/calamares/modules/packages/test.yaml
|
|
||||||
lib/calamares/modules/plymouthcfg/main.py
|
|
||||||
lib/calamares/modules/plymouthcfg/module.desc
|
|
||||||
lib/calamares/modules/preservefiles/libcalamares_job_preservefiles.so
|
|
||||||
lib/calamares/modules/preservefiles/module.desc
|
|
||||||
lib/calamares/modules/rawfs/main.py
|
|
||||||
lib/calamares/modules/rawfs/module.desc
|
|
||||||
lib/calamares/modules/removeuser/libcalamares_job_removeuser.so
|
|
||||||
lib/calamares/modules/removeuser/module.desc
|
|
||||||
lib/calamares/modules/services-openrc/main.py
|
|
||||||
lib/calamares/modules/services-openrc/module.desc
|
|
||||||
lib/calamares/modules/services-systemd/main.py
|
|
||||||
lib/calamares/modules/services-systemd/module.desc
|
|
||||||
lib/calamares/modules/shellprocess/libcalamares_job_shellprocess.so
|
|
||||||
lib/calamares/modules/shellprocess/module.desc
|
|
||||||
lib/calamares/modules/summary/libcalamares_viewmodule_summary.so
|
|
||||||
lib/calamares/modules/summary/module.desc
|
|
||||||
lib/calamares/modules/tracking/libcalamares_viewmodule_tracking.so
|
|
||||||
lib/calamares/modules/tracking/module.desc
|
|
||||||
lib/calamares/modules/umount/main.py
|
|
||||||
lib/calamares/modules/umount/module.desc
|
|
||||||
lib/calamares/modules/unpackfs/main.py
|
|
||||||
lib/calamares/modules/unpackfs/module.desc
|
|
||||||
lib/calamares/modules/unpackfs/runtests.sh
|
|
||||||
lib/calamares/modules/users/libcalamares_viewmodule_users.so
|
|
||||||
lib/calamares/modules/users/module.desc
|
|
||||||
lib/calamares/modules/welcome/libcalamares_viewmodule_welcome.so
|
|
||||||
lib/calamares/modules/welcome/module.desc
|
|
||||||
lib/calamares/modules/welcomeq/libcalamares_viewmodule_welcomeq.so
|
|
||||||
lib/calamares/modules/welcomeq/module.desc
|
|
||||||
lib/cmake/Calamares/CMakeColors.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAddBrandingSubdirectory.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAddLibrary.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAddModuleSubdirectory.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAddPlugin.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAddTest.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAddTranslations.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresAutomoc.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresConfig.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresConfigVersion.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresLibraryDepends-%%CMAKE_BUILD_TYPE%%.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresLibraryDepends.cmake
|
|
||||||
lib/cmake/Calamares/CalamaresUse.cmake
|
|
||||||
lib/libcalamares.so
|
|
||||||
lib/libcalamares.so.3.2.25
|
|
||||||
lib/libcalamaresui.so
|
|
||||||
lib/libcalamaresui.so.3.2.25
|
|
||||||
man/man8/calamares.8.gz
|
|
||||||
share/applications/calamares.desktop
|
|
||||||
%%DATADIR%%/branding/default/banner.png
|
|
||||||
%%DATADIR%%/branding/default/branding.desc
|
|
||||||
%%DATADIR%%/branding/default/lang/calamares-default_ar.qm
|
|
||||||
%%DATADIR%%/branding/default/lang/calamares-default_en.qm
|
|
||||||
%%DATADIR%%/branding/default/lang/calamares-default_eo.qm
|
|
||||||
%%DATADIR%%/branding/default/lang/calamares-default_fr.qm
|
|
||||||
%%DATADIR%%/branding/default/lang/calamares-default_nl.qm
|
|
||||||
%%DATADIR%%/branding/default/languages.png
|
|
||||||
%%DATADIR%%/branding/default/show.qml
|
|
||||||
%%DATADIR%%/branding/default/squid.png
|
|
||||||
%%DATADIR%%/branding/default/stylesheet.qss
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/BackButton.qml
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/ForwardButton.qml
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/NavButton.qml
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/Presentation.qml
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/Slide.qml
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/SlideCounter.qml
|
|
||||||
%%DATADIR%%/qml/calamares/slideshow/qmldir
|
|
||||||
share/icons/hicolor/scalable/apps/calamares.svg
|
|
||||||
share/locale/ar/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/as/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ast/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/be/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/bg/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ca/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/cs_CZ/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/da/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/de/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/el/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/en_GB/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/eo/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/es/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/es_MX/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/es_PR/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/et/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/eu/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/fi_FI/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/fr/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/gl/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/he/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/hi/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/hr/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/hu/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/id/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/is/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/it_IT/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ja/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ko/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/lt/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ml/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/mr/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/nb/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/nl/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/pl/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/pt_BR/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/pt_PT/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ro/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/ru/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/sk/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/sl/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/sq/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/sr/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/sr@latin/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/sv/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/th/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/tr_TR/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/uk/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/zh_CN/LC_MESSAGES/calamares-python.mo
|
|
||||||
share/locale/zh_TW/LC_MESSAGES/calamares-python.mo
|
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB |
@@ -1,28 +0,0 @@
|
|||||||
# Configure one or more display managers (e.g. SDDM)
|
|
||||||
# with a "best effort" approach.
|
|
||||||
---
|
|
||||||
#The DM module attempts to set up all the DMs found in this list, in that precise order.
|
|
||||||
#It also sets up autologin, if the feature is enabled in globalstorage.
|
|
||||||
#The displaymanagers list can also be set in globalstorage, and in that case it overrides anything set up here.
|
|
||||||
displaymanagers:
|
|
||||||
- slim
|
|
||||||
- sddm
|
|
||||||
- lightdm
|
|
||||||
- gdm
|
|
||||||
- mdm
|
|
||||||
- lxdm
|
|
||||||
- kdm
|
|
||||||
|
|
||||||
#Enable the following settings to force a desktop environment in your displaymanager configuration file:
|
|
||||||
#defaultDesktopEnvironment:
|
|
||||||
# executable: "startkde"
|
|
||||||
# desktopFile: "plasma"
|
|
||||||
|
|
||||||
#If true, try to ensure that the user, group, /var directory etc. for the
|
|
||||||
#display manager are set up correctly. This is normally done by the distribution
|
|
||||||
#packages, and best left to them. Therefore, it is disabled by default.
|
|
||||||
basicSetup: false
|
|
||||||
|
|
||||||
#If true, setup autologin for openSUSE. This only makes sense on openSUSE
|
|
||||||
#derivatives or other systems where /etc/sysconfig/displaymanager exists.
|
|
||||||
sysconfigSetup: false
|
|
@@ -1,31 +0,0 @@
|
|||||||
# Configuration for the "finished" page, which is usually shown only at
|
|
||||||
# the end of the installation (successful or not).
|
|
||||||
---
|
|
||||||
# Behavior of the "restart system now" button.
|
|
||||||
#
|
|
||||||
# There are four usable values:
|
|
||||||
# - never
|
|
||||||
# Does not show the button and does not restart.
|
|
||||||
# This matches the old behavior with restartNowEnabled=false.
|
|
||||||
# - user-unchecked
|
|
||||||
# Shows the button, defaults to unchecked, restarts if it is checked.
|
|
||||||
# This matches the old behavior with restartNowEnabled=true and restartNowChecked=false.
|
|
||||||
# - user-checked
|
|
||||||
# Shows the button, defaults to checked, restarts if it is checked.
|
|
||||||
# This matches the old behavior with restartNowEnabled=true and restartNowChecked=true.
|
|
||||||
# - always
|
|
||||||
# Shows the button, checked, but the user cannot change it.
|
|
||||||
# This is new behavior.
|
|
||||||
#
|
|
||||||
# The three combinations of legacy values are still supported.
|
|
||||||
restartNowMode: user-unchecked
|
|
||||||
|
|
||||||
# If the checkbox is shown, and the checkbox is checked, then when
|
|
||||||
# Calamares exits from the finished-page it will run this command.
|
|
||||||
# If not set, falls back to "shutdown -r now".
|
|
||||||
restartNowCommand: "systemctl -i reboot"
|
|
||||||
|
|
||||||
# When the last page is (successfully) reached, send a DBus notification
|
|
||||||
# to the desktop that the installation is done. This works only if the
|
|
||||||
# user as whom Calamares is run, can reach the regular desktop session bus.
|
|
||||||
notifyOnFinished: false
|
|
@@ -1,16 +0,0 @@
|
|||||||
# NOTE: you must have ckbcomp installed and runnable
|
|
||||||
# on the live system, for keyboard layout previews.
|
|
||||||
---
|
|
||||||
# The name of the file to write X11 keyboard settings to
|
|
||||||
# The default value is the name used by upstream systemd-localed.
|
|
||||||
# Relative paths are assumed to be relative to /etc/X11/xorg.conf.d
|
|
||||||
xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf"
|
|
||||||
|
|
||||||
# The path to search for keymaps converted from X11 to kbd format
|
|
||||||
# Leave this empty if the setting does not make sense on your distribution.
|
|
||||||
convertedKeymapPath: "/lib/kbd/keymaps/xkb"
|
|
||||||
|
|
||||||
# Write keymap configuration to /etc/default/keyboard, usually
|
|
||||||
# found on Debian-related systems.
|
|
||||||
# Defaults to true if nothing is set.
|
|
||||||
#writeEtcDefaultKeyboard: true
|
|
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
# This settings are used to set your default system time zone.
|
|
||||||
# Time zones are usually located under /usr/share/zoneinfo and
|
|
||||||
# provided by the 'tzdata' package of your Distribution.
|
|
||||||
#
|
|
||||||
# Distributions using systemd can list available
|
|
||||||
# time zones by using the timedatectl command.
|
|
||||||
# timedatectl list-timezones
|
|
||||||
#
|
|
||||||
# The starting timezone (e.g. the pin-on-the-map) when entering
|
|
||||||
# the locale page can be set through keys *region* and *zone*.
|
|
||||||
# If either is not set, defaults to America/New_York.
|
|
||||||
#
|
|
||||||
region: "Europe"
|
|
||||||
zone: "Amsterdam"
|
|
||||||
|
|
||||||
|
|
||||||
# Enable only when your Distribution is using an
|
|
||||||
# custom path for locale.gen
|
|
||||||
#localeGenPath: "PATH_TO/locale.gen"
|
|
||||||
|
|
||||||
# GeoIP based Language settings:
|
|
||||||
#
|
|
||||||
# GeoIP need an working Internet connection.
|
|
||||||
#
|
|
||||||
geoipUrl: "https://geoip.kde.org/v1/calamares"
|
|
||||||
|
|
||||||
# GeoIP style. Leave commented out for the "legacy" interpretation.
|
|
||||||
# This setting only makes sense if geoipUrl is set, enabliing geoIP.
|
|
||||||
geoipStyle: "json"
|
|
||||||
|
|
@@ -1,59 +0,0 @@
|
|||||||
# Configuration for the one-user-system user module.
|
|
||||||
#
|
|
||||||
# Besides these settings, the user module also places the following
|
|
||||||
# keys into the globalconfig area, based on user input in the view step.
|
|
||||||
#
|
|
||||||
# - hostname
|
|
||||||
# - username
|
|
||||||
# - password (obscured)
|
|
||||||
# - autologinUser (if enabled, set to username)
|
|
||||||
#
|
|
||||||
# These globalconfig keys are set when the jobs for this module
|
|
||||||
# are created.
|
|
||||||
---
|
|
||||||
# Used as default groups for the created user.
|
|
||||||
# Adjust to your Distribution defaults.
|
|
||||||
defaultGroups:
|
|
||||||
- users
|
|
||||||
- lp
|
|
||||||
- video
|
|
||||||
- network
|
|
||||||
- storage
|
|
||||||
- wheel
|
|
||||||
- audio
|
|
||||||
|
|
||||||
# Some Distributions require a 'autologin' group for the user.
|
|
||||||
# Autologin causes a user to become automatically logged in to
|
|
||||||
# the desktop environment on boot.
|
|
||||||
# Disable when your Distribution does not require such a group.
|
|
||||||
autologinGroup: autologin
|
|
||||||
# You can control the initial state for the 'autologin checkbox' in UsersViewStep here.
|
|
||||||
# Possible values are: true to enable or false to disable the checkbox by default
|
|
||||||
doAutologin: true
|
|
||||||
|
|
||||||
# When set to a non-empty string, Calamares creates a sudoers file for the user.
|
|
||||||
# /etc/sudoers.d/10-installer
|
|
||||||
# Remember to add sudoersGroup to defaultGroups.
|
|
||||||
#
|
|
||||||
# If your Distribution already sets up a group of sudoers in its packaging,
|
|
||||||
# remove this setting (delete or comment out the line below). Otherwise,
|
|
||||||
# the setting will be duplicated in the /etc/sudoers.d/10-installer file,
|
|
||||||
# potentially confusing users.
|
|
||||||
sudoersGroup: wheel
|
|
||||||
|
|
||||||
# Setting this to false , causes the root account to be disabled.
|
|
||||||
setRootPassword: true
|
|
||||||
# You can control the initial state for the 'root password checkbox' in UsersViewStep here.
|
|
||||||
# Possible values are: true to enable or false to disable the checkbox by default.
|
|
||||||
# When enabled the user password is used for the root account too.
|
|
||||||
# NOTE: doReusePassword requires setRootPassword to be enabled.
|
|
||||||
doReusePassword: true
|
|
||||||
|
|
||||||
# These are optional password-requirements that a distro can enforce
|
|
||||||
# on the user. The values given in this sample file disable each check,
|
|
||||||
# as if the check was not listed at all.
|
|
||||||
passwordRequirements:
|
|
||||||
minLength: -1 # Password at least this many characters
|
|
||||||
maxLength: -1 # Password at most this many characters
|
|
||||||
|
|
||||||
userShell: /bin/bash
|
|
@@ -1,46 +0,0 @@
|
|||||||
# Configuration for the welcome module. The welcome page
|
|
||||||
# displays some information from the branding file.
|
|
||||||
# Which parts it displays can be configured through
|
|
||||||
# the show* variables.
|
|
||||||
#
|
|
||||||
# In addition to displaying the welcome page, this module
|
|
||||||
# can check requirements for installation.
|
|
||||||
---
|
|
||||||
# Display settings for various buttons on the welcome page.
|
|
||||||
showSupportUrl: true
|
|
||||||
showKnownIssuesUrl: true
|
|
||||||
showReleaseNotesUrl: true
|
|
||||||
|
|
||||||
# Requirements checking. These are general, generic, things
|
|
||||||
# that are checked. They may not match with the actual requirements
|
|
||||||
# imposed by other modules in the system.
|
|
||||||
requirements:
|
|
||||||
# Amount of available disk, in GiB. Floating-point is allowed here.
|
|
||||||
# Note that this does not account for *usable* disk, so it is possible
|
|
||||||
# to pass this requirement, yet have no space to install to.
|
|
||||||
requiredStorage: 5.5
|
|
||||||
|
|
||||||
# Amount of available RAM, in GiB. Floating-point is allowed here.
|
|
||||||
requiredRam: 1.0
|
|
||||||
|
|
||||||
# To check for internet connectivity, Calamares does a HTTP GET
|
|
||||||
# on this URL; on success (e.g. HTTP code 200) internet is OK.
|
|
||||||
internetCheckUrl: http://google.com
|
|
||||||
|
|
||||||
# List conditions to check. Each listed condition will be
|
|
||||||
# probed in some way, and yields true or false according to
|
|
||||||
# the host system satisfying the condition.
|
|
||||||
#
|
|
||||||
# This sample file lists all the conditions that are known.
|
|
||||||
check:
|
|
||||||
- ram
|
|
||||||
- power
|
|
||||||
- internet
|
|
||||||
- root
|
|
||||||
- screen
|
|
||||||
# List conditions that **must** be satisfied (from the list
|
|
||||||
# of conditions, above) for installation to proceed.
|
|
||||||
# If any of these conditions are not met, the user cannot
|
|
||||||
# continue past the welcome page.
|
|
||||||
required:
|
|
||||||
- ram
|
|
@@ -1,36 +0,0 @@
|
|||||||
# Configuration file for Calamares
|
|
||||||
# Syntax is YAML 1.2
|
|
||||||
---
|
|
||||||
modules-search: [ usr/lib/calamares/modules ]
|
|
||||||
|
|
||||||
# YAML: list of maps of string:string key-value pairs.
|
|
||||||
#instances:
|
|
||||||
#- id: owncloud
|
|
||||||
# module: webview
|
|
||||||
# config: owncloud.conf
|
|
||||||
|
|
||||||
# Sequence section. This section describes the sequence of modules, both
|
|
||||||
# viewmodules and jobmodules, as they should appear and/or run.
|
|
||||||
sequence:
|
|
||||||
- show:
|
|
||||||
- welcome
|
|
||||||
- locale
|
|
||||||
- keyboard
|
|
||||||
- users
|
|
||||||
- summary
|
|
||||||
- exec:
|
|
||||||
- dummypython
|
|
||||||
- locale
|
|
||||||
- keyboard
|
|
||||||
- users
|
|
||||||
- displaymanager
|
|
||||||
- networkcfg
|
|
||||||
- show:
|
|
||||||
- finished
|
|
||||||
|
|
||||||
branding: default
|
|
||||||
|
|
||||||
prompt-install: false
|
|
||||||
# OEM mode
|
|
||||||
dont-chroot: true
|
|
||||||
disable-cancel: false
|
|
@@ -1,11 +0,0 @@
|
|||||||
# Example Filesystem
|
|
||||||
|
|
||||||
This is a filesystem that will be used as / in an example distro,
|
|
||||||
*if* you build the `example-distro` target and use the default
|
|
||||||
unpackfs configuration. It should hold files and configuration
|
|
||||||
bits that need to be on the target system for example purposes.
|
|
||||||
|
|
||||||
It should *not* have a bin/, lib/, sbin/ or lib64/ directory,
|
|
||||||
since those are copied into the example-distro filesystem
|
|
||||||
from the build host.
|
|
||||||
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Global .profile -- add /sbin_1
|
|
||||||
PATH=$PATH:/sbin_1:/xbin
|
|
@@ -1 +0,0 @@
|
|||||||
root:x:0:
|
|
@@ -1 +0,0 @@
|
|||||||
This is an example /etc/issue file.
|
|
@@ -1,486 +0,0 @@
|
|||||||
# This file lists locales that you wish to have built. You can find a list
|
|
||||||
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
|
|
||||||
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
|
|
||||||
# this file, you need to rerun locale-gen.
|
|
||||||
|
|
||||||
|
|
||||||
# aa_DJ ISO-8859-1
|
|
||||||
# aa_DJ.UTF-8 UTF-8
|
|
||||||
# aa_ER UTF-8
|
|
||||||
# aa_ER@saaho UTF-8
|
|
||||||
# aa_ET UTF-8
|
|
||||||
# af_ZA ISO-8859-1
|
|
||||||
# af_ZA.UTF-8 UTF-8
|
|
||||||
# ak_GH UTF-8
|
|
||||||
# am_ET UTF-8
|
|
||||||
# an_ES ISO-8859-15
|
|
||||||
# an_ES.UTF-8 UTF-8
|
|
||||||
# anp_IN UTF-8
|
|
||||||
# ar_AE ISO-8859-6
|
|
||||||
# ar_AE.UTF-8 UTF-8
|
|
||||||
# ar_BH ISO-8859-6
|
|
||||||
# ar_BH.UTF-8 UTF-8
|
|
||||||
# ar_DZ ISO-8859-6
|
|
||||||
# ar_DZ.UTF-8 UTF-8
|
|
||||||
# ar_EG ISO-8859-6
|
|
||||||
# ar_EG.UTF-8 UTF-8
|
|
||||||
# ar_IN UTF-8
|
|
||||||
# ar_IQ ISO-8859-6
|
|
||||||
# ar_IQ.UTF-8 UTF-8
|
|
||||||
# ar_JO ISO-8859-6
|
|
||||||
# ar_JO.UTF-8 UTF-8
|
|
||||||
# ar_KW ISO-8859-6
|
|
||||||
# ar_KW.UTF-8 UTF-8
|
|
||||||
# ar_LB ISO-8859-6
|
|
||||||
# ar_LB.UTF-8 UTF-8
|
|
||||||
# ar_LY ISO-8859-6
|
|
||||||
# ar_LY.UTF-8 UTF-8
|
|
||||||
# ar_MA ISO-8859-6
|
|
||||||
# ar_MA.UTF-8 UTF-8
|
|
||||||
# ar_OM ISO-8859-6
|
|
||||||
# ar_OM.UTF-8 UTF-8
|
|
||||||
# ar_QA ISO-8859-6
|
|
||||||
# ar_QA.UTF-8 UTF-8
|
|
||||||
# ar_SA ISO-8859-6
|
|
||||||
# ar_SA.UTF-8 UTF-8
|
|
||||||
# ar_SD ISO-8859-6
|
|
||||||
# ar_SD.UTF-8 UTF-8
|
|
||||||
# ar_SS UTF-8
|
|
||||||
# ar_SY ISO-8859-6
|
|
||||||
# ar_SY.UTF-8 UTF-8
|
|
||||||
# ar_TN ISO-8859-6
|
|
||||||
# ar_TN.UTF-8 UTF-8
|
|
||||||
# ar_YE ISO-8859-6
|
|
||||||
# ar_YE.UTF-8 UTF-8
|
|
||||||
# as_IN UTF-8
|
|
||||||
# ast_ES ISO-8859-15
|
|
||||||
# ast_ES.UTF-8 UTF-8
|
|
||||||
# ayc_PE UTF-8
|
|
||||||
# az_AZ UTF-8
|
|
||||||
# be_BY CP1251
|
|
||||||
# be_BY.UTF-8 UTF-8
|
|
||||||
# be_BY@latin UTF-8
|
|
||||||
# bem_ZM UTF-8
|
|
||||||
# ber_DZ UTF-8
|
|
||||||
# ber_MA UTF-8
|
|
||||||
# bg_BG CP1251
|
|
||||||
# bg_BG.UTF-8 UTF-8
|
|
||||||
# bhb_IN.UTF-8 UTF-8
|
|
||||||
# bho_IN UTF-8
|
|
||||||
# bn_BD UTF-8
|
|
||||||
# bn_IN UTF-8
|
|
||||||
# bo_CN UTF-8
|
|
||||||
# bo_IN UTF-8
|
|
||||||
# br_FR ISO-8859-1
|
|
||||||
# br_FR.UTF-8 UTF-8
|
|
||||||
# br_FR@euro ISO-8859-15
|
|
||||||
# brx_IN UTF-8
|
|
||||||
# bs_BA ISO-8859-2
|
|
||||||
# bs_BA.UTF-8 UTF-8
|
|
||||||
# byn_ER UTF-8
|
|
||||||
# ca_AD ISO-8859-15
|
|
||||||
# ca_AD.UTF-8 UTF-8
|
|
||||||
# ca_ES ISO-8859-1
|
|
||||||
# ca_ES.UTF-8 UTF-8
|
|
||||||
# ca_ES.UTF-8@valencia UTF-8
|
|
||||||
# ca_ES@euro ISO-8859-15
|
|
||||||
# ca_ES@valencia ISO-8859-15
|
|
||||||
# ca_FR ISO-8859-15
|
|
||||||
# ca_FR.UTF-8 UTF-8
|
|
||||||
# ca_IT ISO-8859-15
|
|
||||||
# ca_IT.UTF-8 UTF-8
|
|
||||||
# ce_RU UTF-8
|
|
||||||
# ckb_IQ UTF-8
|
|
||||||
# cmn_TW UTF-8
|
|
||||||
# crh_UA UTF-8
|
|
||||||
# cs_CZ ISO-8859-2
|
|
||||||
# cs_CZ.UTF-8 UTF-8
|
|
||||||
# csb_PL UTF-8
|
|
||||||
# cv_RU UTF-8
|
|
||||||
# cy_GB ISO-8859-14
|
|
||||||
# cy_GB.UTF-8 UTF-8
|
|
||||||
# da_DK ISO-8859-1
|
|
||||||
# da_DK.UTF-8 UTF-8
|
|
||||||
# de_AT ISO-8859-1
|
|
||||||
# de_AT.UTF-8 UTF-8
|
|
||||||
# de_AT@euro ISO-8859-15
|
|
||||||
# de_BE ISO-8859-1
|
|
||||||
# de_BE.UTF-8 UTF-8
|
|
||||||
# de_BE@euro ISO-8859-15
|
|
||||||
# de_CH ISO-8859-1
|
|
||||||
# de_CH.UTF-8 UTF-8
|
|
||||||
# de_DE ISO-8859-1
|
|
||||||
# de_DE.UTF-8 UTF-8
|
|
||||||
# de_DE@euro ISO-8859-15
|
|
||||||
# de_LI.UTF-8 UTF-8
|
|
||||||
# de_LU ISO-8859-1
|
|
||||||
# de_LU.UTF-8 UTF-8
|
|
||||||
# de_LU@euro ISO-8859-15
|
|
||||||
# doi_IN UTF-8
|
|
||||||
# dv_MV UTF-8
|
|
||||||
# dz_BT UTF-8
|
|
||||||
# el_CY ISO-8859-7
|
|
||||||
# el_CY.UTF-8 UTF-8
|
|
||||||
# el_GR ISO-8859-7
|
|
||||||
# el_GR.UTF-8 UTF-8
|
|
||||||
# en_AG UTF-8
|
|
||||||
# en_AU ISO-8859-1
|
|
||||||
# en_AU.UTF-8 UTF-8
|
|
||||||
# en_BW ISO-8859-1
|
|
||||||
# en_BW.UTF-8 UTF-8
|
|
||||||
# en_CA ISO-8859-1
|
|
||||||
en_CA.UTF-8 UTF-8
|
|
||||||
# en_DK ISO-8859-1
|
|
||||||
# en_DK.ISO-8859-15 ISO-8859-15
|
|
||||||
# en_DK.UTF-8 UTF-8
|
|
||||||
# en_GB ISO-8859-1
|
|
||||||
# en_GB.ISO-8859-15 ISO-8859-15
|
|
||||||
# en_GB.UTF-8 UTF-8
|
|
||||||
# en_HK ISO-8859-1
|
|
||||||
# en_HK.UTF-8 UTF-8
|
|
||||||
# en_IE ISO-8859-1
|
|
||||||
# en_IE.UTF-8 UTF-8
|
|
||||||
# en_IE@euro ISO-8859-15
|
|
||||||
# en_IN UTF-8
|
|
||||||
# en_NG UTF-8
|
|
||||||
# en_NZ ISO-8859-1
|
|
||||||
# en_NZ.UTF-8 UTF-8
|
|
||||||
# en_PH ISO-8859-1
|
|
||||||
# en_PH.UTF-8 UTF-8
|
|
||||||
# en_SG ISO-8859-1
|
|
||||||
# en_SG.UTF-8 UTF-8
|
|
||||||
# en_US ISO-8859-1
|
|
||||||
# en_US.ISO-8859-15 ISO-8859-15
|
|
||||||
en_US.UTF-8 UTF-8
|
|
||||||
# en_ZA ISO-8859-1
|
|
||||||
# en_ZA.UTF-8 UTF-8
|
|
||||||
# en_ZM UTF-8
|
|
||||||
# en_ZW ISO-8859-1
|
|
||||||
# en_ZW.UTF-8 UTF-8
|
|
||||||
# eo ISO-8859-3
|
|
||||||
# eo.UTF-8 UTF-8
|
|
||||||
# eo_US.UTF-8 UTF-8
|
|
||||||
# es_AR ISO-8859-1
|
|
||||||
# es_AR.UTF-8 UTF-8
|
|
||||||
# es_BO ISO-8859-1
|
|
||||||
# es_BO.UTF-8 UTF-8
|
|
||||||
# es_CL ISO-8859-1
|
|
||||||
# es_CL.UTF-8 UTF-8
|
|
||||||
# es_CO ISO-8859-1
|
|
||||||
# es_CO.UTF-8 UTF-8
|
|
||||||
# es_CR ISO-8859-1
|
|
||||||
# es_CR.UTF-8 UTF-8
|
|
||||||
# es_CU UTF-8
|
|
||||||
# es_DO ISO-8859-1
|
|
||||||
# es_DO.UTF-8 UTF-8
|
|
||||||
# es_EC ISO-8859-1
|
|
||||||
# es_EC.UTF-8 UTF-8
|
|
||||||
# es_ES ISO-8859-1
|
|
||||||
# es_ES.UTF-8 UTF-8
|
|
||||||
# es_ES@euro ISO-8859-15
|
|
||||||
# es_GT ISO-8859-1
|
|
||||||
# es_GT.UTF-8 UTF-8
|
|
||||||
# es_HN ISO-8859-1
|
|
||||||
# es_HN.UTF-8 UTF-8
|
|
||||||
# es_MX ISO-8859-1
|
|
||||||
# es_MX.UTF-8 UTF-8
|
|
||||||
# es_NI ISO-8859-1
|
|
||||||
# es_NI.UTF-8 UTF-8
|
|
||||||
# es_PA ISO-8859-1
|
|
||||||
# es_PA.UTF-8 UTF-8
|
|
||||||
# es_PE ISO-8859-1
|
|
||||||
# es_PE.UTF-8 UTF-8
|
|
||||||
# es_PR ISO-8859-1
|
|
||||||
# es_PR.UTF-8 UTF-8
|
|
||||||
# es_PY ISO-8859-1
|
|
||||||
# es_PY.UTF-8 UTF-8
|
|
||||||
# es_SV ISO-8859-1
|
|
||||||
# es_SV.UTF-8 UTF-8
|
|
||||||
# es_US ISO-8859-1
|
|
||||||
# es_US.UTF-8 UTF-8
|
|
||||||
# es_UY ISO-8859-1
|
|
||||||
# es_UY.UTF-8 UTF-8
|
|
||||||
# es_VE ISO-8859-1
|
|
||||||
# es_VE.UTF-8 UTF-8
|
|
||||||
# et_EE ISO-8859-1
|
|
||||||
# et_EE.ISO-8859-15 ISO-8859-15
|
|
||||||
# et_EE.UTF-8 UTF-8
|
|
||||||
# eu_ES ISO-8859-1
|
|
||||||
# eu_ES.UTF-8 UTF-8
|
|
||||||
# eu_ES@euro ISO-8859-15
|
|
||||||
# eu_FR ISO-8859-1
|
|
||||||
# eu_FR.UTF-8 UTF-8
|
|
||||||
# eu_FR@euro ISO-8859-15
|
|
||||||
# fa_IR UTF-8
|
|
||||||
# ff_SN UTF-8
|
|
||||||
# fi_FI ISO-8859-1
|
|
||||||
# fi_FI.UTF-8 UTF-8
|
|
||||||
# fi_FI@euro ISO-8859-15
|
|
||||||
# fil_PH UTF-8
|
|
||||||
# fo_FO ISO-8859-1
|
|
||||||
# fo_FO.UTF-8 UTF-8
|
|
||||||
# fr_BE ISO-8859-1
|
|
||||||
# fr_BE.UTF-8 UTF-8
|
|
||||||
# fr_BE@euro ISO-8859-15
|
|
||||||
# fr_CA ISO-8859-1
|
|
||||||
# fr_CA.UTF-8 UTF-8
|
|
||||||
# fr_CH ISO-8859-1
|
|
||||||
# fr_CH.UTF-8 UTF-8
|
|
||||||
# fr_FR ISO-8859-1
|
|
||||||
# fr_FR.UTF-8 UTF-8
|
|
||||||
# fr_FR@euro ISO-8859-15
|
|
||||||
# fr_LU ISO-8859-1
|
|
||||||
# fr_LU.UTF-8 UTF-8
|
|
||||||
# fr_LU@euro ISO-8859-15
|
|
||||||
# fur_IT UTF-8
|
|
||||||
# fy_DE UTF-8
|
|
||||||
# fy_NL UTF-8
|
|
||||||
# ga_IE ISO-8859-1
|
|
||||||
# ga_IE.UTF-8 UTF-8
|
|
||||||
# ga_IE@euro ISO-8859-15
|
|
||||||
# gd_GB ISO-8859-15
|
|
||||||
# gd_GB.UTF-8 UTF-8
|
|
||||||
# gez_ER UTF-8
|
|
||||||
# gez_ER@abegede UTF-8
|
|
||||||
# gez_ET UTF-8
|
|
||||||
# gez_ET@abegede UTF-8
|
|
||||||
# gl_ES ISO-8859-1
|
|
||||||
# gl_ES.UTF-8 UTF-8
|
|
||||||
# gl_ES@euro ISO-8859-15
|
|
||||||
# gu_IN UTF-8
|
|
||||||
# gv_GB ISO-8859-1
|
|
||||||
# gv_GB.UTF-8 UTF-8
|
|
||||||
# ha_NG UTF-8
|
|
||||||
# hak_TW UTF-8
|
|
||||||
# he_IL ISO-8859-8
|
|
||||||
# he_IL.UTF-8 UTF-8
|
|
||||||
# hi_IN UTF-8
|
|
||||||
# hne_IN UTF-8
|
|
||||||
# hr_HR ISO-8859-2
|
|
||||||
# hr_HR.UTF-8 UTF-8
|
|
||||||
# hsb_DE ISO-8859-2
|
|
||||||
# hsb_DE.UTF-8 UTF-8
|
|
||||||
# ht_HT UTF-8
|
|
||||||
# hu_HU ISO-8859-2
|
|
||||||
# hu_HU.UTF-8 UTF-8
|
|
||||||
# hy_AM UTF-8
|
|
||||||
# hy_AM.ARMSCII-8 ARMSCII-8
|
|
||||||
# ia_FR UTF-8
|
|
||||||
# id_ID ISO-8859-1
|
|
||||||
# id_ID.UTF-8 UTF-8
|
|
||||||
# ig_NG UTF-8
|
|
||||||
# ik_CA UTF-8
|
|
||||||
# is_IS ISO-8859-1
|
|
||||||
# is_IS.UTF-8 UTF-8
|
|
||||||
# it_CH ISO-8859-1
|
|
||||||
# it_CH.UTF-8 UTF-8
|
|
||||||
# it_IT ISO-8859-1
|
|
||||||
# it_IT.UTF-8 UTF-8
|
|
||||||
# it_IT@euro ISO-8859-15
|
|
||||||
# iu_CA UTF-8
|
|
||||||
# iw_IL ISO-8859-8
|
|
||||||
# iw_IL.UTF-8 UTF-8
|
|
||||||
# ja_JP.EUC-JP EUC-JP
|
|
||||||
# ja_JP.UTF-8 UTF-8
|
|
||||||
# ka_GE GEORGIAN-PS
|
|
||||||
# ka_GE.UTF-8 UTF-8
|
|
||||||
# kk_KZ PT154
|
|
||||||
# kk_KZ RK1048
|
|
||||||
# kk_KZ.UTF-8 UTF-8
|
|
||||||
# kl_GL ISO-8859-1
|
|
||||||
# kl_GL.UTF-8 UTF-8
|
|
||||||
# km_KH UTF-8
|
|
||||||
# kn_IN UTF-8
|
|
||||||
# ko_KR.EUC-KR EUC-KR
|
|
||||||
# ko_KR.UTF-8 UTF-8
|
|
||||||
# kok_IN UTF-8
|
|
||||||
# ks_IN UTF-8
|
|
||||||
# ks_IN@devanagari UTF-8
|
|
||||||
# ku_TR ISO-8859-9
|
|
||||||
# ku_TR.UTF-8 UTF-8
|
|
||||||
# kw_GB ISO-8859-1
|
|
||||||
# kw_GB.UTF-8 UTF-8
|
|
||||||
# ky_KG UTF-8
|
|
||||||
# lb_LU UTF-8
|
|
||||||
# lg_UG ISO-8859-10
|
|
||||||
# lg_UG.UTF-8 UTF-8
|
|
||||||
# li_BE UTF-8
|
|
||||||
# li_NL UTF-8
|
|
||||||
# lij_IT UTF-8
|
|
||||||
# ln_CD UTF-8
|
|
||||||
# lo_LA UTF-8
|
|
||||||
# lt_LT ISO-8859-13
|
|
||||||
# lt_LT.UTF-8 UTF-8
|
|
||||||
# lv_LV ISO-8859-13
|
|
||||||
# lv_LV.UTF-8 UTF-8
|
|
||||||
# lzh_TW UTF-8
|
|
||||||
# mag_IN UTF-8
|
|
||||||
# mai_IN UTF-8
|
|
||||||
# mg_MG ISO-8859-15
|
|
||||||
# mg_MG.UTF-8 UTF-8
|
|
||||||
# mhr_RU UTF-8
|
|
||||||
# mi_NZ ISO-8859-13
|
|
||||||
# mi_NZ.UTF-8 UTF-8
|
|
||||||
# mk_MK ISO-8859-5
|
|
||||||
# mk_MK.UTF-8 UTF-8
|
|
||||||
# ml_IN UTF-8
|
|
||||||
# mn_MN UTF-8
|
|
||||||
# mni_IN UTF-8
|
|
||||||
# mr_IN UTF-8
|
|
||||||
# ms_MY ISO-8859-1
|
|
||||||
# ms_MY.UTF-8 UTF-8
|
|
||||||
# mt_MT ISO-8859-3
|
|
||||||
# mt_MT.UTF-8 UTF-8
|
|
||||||
# my_MM UTF-8
|
|
||||||
# nan_TW UTF-8
|
|
||||||
# nan_TW@latin UTF-8
|
|
||||||
# nb_NO ISO-8859-1
|
|
||||||
# nb_NO.UTF-8 UTF-8
|
|
||||||
# nds_DE UTF-8
|
|
||||||
# nds_NL UTF-8
|
|
||||||
# ne_NP UTF-8
|
|
||||||
# nhn_MX UTF-8
|
|
||||||
# niu_NU UTF-8
|
|
||||||
# niu_NZ UTF-8
|
|
||||||
# nl_AW UTF-8
|
|
||||||
# nl_BE ISO-8859-1
|
|
||||||
# nl_BE.UTF-8 UTF-8
|
|
||||||
# nl_BE@euro ISO-8859-15
|
|
||||||
# nl_NL ISO-8859-1
|
|
||||||
# nl_NL.UTF-8 UTF-8
|
|
||||||
# nl_NL@euro ISO-8859-15
|
|
||||||
# nn_NO ISO-8859-1
|
|
||||||
# nn_NO.UTF-8 UTF-8
|
|
||||||
# nr_ZA UTF-8
|
|
||||||
# nso_ZA UTF-8
|
|
||||||
# oc_FR ISO-8859-1
|
|
||||||
# oc_FR.UTF-8 UTF-8
|
|
||||||
# om_ET UTF-8
|
|
||||||
# om_KE ISO-8859-1
|
|
||||||
# om_KE.UTF-8 UTF-8
|
|
||||||
# or_IN UTF-8
|
|
||||||
# os_RU UTF-8
|
|
||||||
# pa_IN UTF-8
|
|
||||||
# pa_PK UTF-8
|
|
||||||
# pap_AN UTF-8
|
|
||||||
# pap_AW UTF-8
|
|
||||||
# pap_CW UTF-8
|
|
||||||
# pl_PL ISO-8859-2
|
|
||||||
# pl_PL.UTF-8 UTF-8
|
|
||||||
# ps_AF UTF-8
|
|
||||||
# pt_BR ISO-8859-1
|
|
||||||
# pt_BR.UTF-8 UTF-8
|
|
||||||
# pt_PT ISO-8859-1
|
|
||||||
# pt_PT.UTF-8 UTF-8
|
|
||||||
# pt_PT@euro ISO-8859-15
|
|
||||||
# quz_PE UTF-8
|
|
||||||
# raj_IN UTF-8
|
|
||||||
# ro_RO ISO-8859-2
|
|
||||||
# ro_RO.UTF-8 UTF-8
|
|
||||||
# ru_RU ISO-8859-5
|
|
||||||
# ru_RU.CP1251 CP1251
|
|
||||||
# ru_RU.KOI8-R KOI8-R
|
|
||||||
# ru_RU.UTF-8 UTF-8
|
|
||||||
# ru_UA KOI8-U
|
|
||||||
# ru_UA.UTF-8 UTF-8
|
|
||||||
# rw_RW UTF-8
|
|
||||||
# sa_IN UTF-8
|
|
||||||
# sat_IN UTF-8
|
|
||||||
# sc_IT UTF-8
|
|
||||||
# sd_IN UTF-8
|
|
||||||
# sd_IN@devanagari UTF-8
|
|
||||||
# sd_PK UTF-8
|
|
||||||
# se_NO UTF-8
|
|
||||||
# shs_CA UTF-8
|
|
||||||
# si_LK UTF-8
|
|
||||||
# sid_ET UTF-8
|
|
||||||
# sk_SK ISO-8859-2
|
|
||||||
# sk_SK.UTF-8 UTF-8
|
|
||||||
# sl_SI ISO-8859-2
|
|
||||||
# sl_SI.UTF-8 UTF-8
|
|
||||||
# so_DJ ISO-8859-1
|
|
||||||
# so_DJ.UTF-8 UTF-8
|
|
||||||
# so_ET UTF-8
|
|
||||||
# so_KE ISO-8859-1
|
|
||||||
# so_KE.UTF-8 UTF-8
|
|
||||||
# so_SO ISO-8859-1
|
|
||||||
# so_SO.UTF-8 UTF-8
|
|
||||||
# sq_AL ISO-8859-1
|
|
||||||
# sq_AL.UTF-8 UTF-8
|
|
||||||
# sq_MK UTF-8
|
|
||||||
# sr_ME UTF-8
|
|
||||||
# sr_RS UTF-8
|
|
||||||
# sr_RS@latin UTF-8
|
|
||||||
# ss_ZA UTF-8
|
|
||||||
# st_ZA ISO-8859-1
|
|
||||||
# st_ZA.UTF-8 UTF-8
|
|
||||||
# sv_FI ISO-8859-1
|
|
||||||
# sv_FI.UTF-8 UTF-8
|
|
||||||
# sv_FI@euro ISO-8859-15
|
|
||||||
# sv_SE ISO-8859-1
|
|
||||||
# sv_SE.ISO-8859-15 ISO-8859-15
|
|
||||||
# sv_SE.UTF-8 UTF-8
|
|
||||||
# sw_KE UTF-8
|
|
||||||
# sw_TZ UTF-8
|
|
||||||
# szl_PL UTF-8
|
|
||||||
# ta_IN UTF-8
|
|
||||||
# ta_LK UTF-8
|
|
||||||
# tcy_IN.UTF-8 UTF-8
|
|
||||||
# te_IN UTF-8
|
|
||||||
# tg_TJ KOI8-T
|
|
||||||
# tg_TJ.UTF-8 UTF-8
|
|
||||||
# th_TH TIS-620
|
|
||||||
# th_TH.UTF-8 UTF-8
|
|
||||||
# the_NP UTF-8
|
|
||||||
# ti_ER UTF-8
|
|
||||||
# ti_ET UTF-8
|
|
||||||
# tig_ER UTF-8
|
|
||||||
# tk_TM UTF-8
|
|
||||||
# tl_PH ISO-8859-1
|
|
||||||
# tl_PH.UTF-8 UTF-8
|
|
||||||
# tn_ZA UTF-8
|
|
||||||
# tr_CY ISO-8859-9
|
|
||||||
# tr_CY.UTF-8 UTF-8
|
|
||||||
# tr_TR ISO-8859-9
|
|
||||||
# tr_TR.UTF-8 UTF-8
|
|
||||||
# ts_ZA UTF-8
|
|
||||||
# tt_RU UTF-8
|
|
||||||
# tt_RU@iqtelif UTF-8
|
|
||||||
# ug_CN UTF-8
|
|
||||||
# ug_CN@latin UTF-8
|
|
||||||
# uk_UA KOI8-U
|
|
||||||
# uk_UA.UTF-8 UTF-8
|
|
||||||
# unm_US UTF-8
|
|
||||||
# ur_IN UTF-8
|
|
||||||
# ur_PK UTF-8
|
|
||||||
# uz_UZ ISO-8859-1
|
|
||||||
# uz_UZ.UTF-8 UTF-8
|
|
||||||
# uz_UZ@cyrillic UTF-8
|
|
||||||
# ve_ZA UTF-8
|
|
||||||
# vi_VN UTF-8
|
|
||||||
# wa_BE ISO-8859-1
|
|
||||||
# wa_BE.UTF-8 UTF-8
|
|
||||||
# wa_BE@euro ISO-8859-15
|
|
||||||
# wae_CH UTF-8
|
|
||||||
# wal_ET UTF-8
|
|
||||||
# wo_SN UTF-8
|
|
||||||
# xh_ZA ISO-8859-1
|
|
||||||
# xh_ZA.UTF-8 UTF-8
|
|
||||||
# yi_US CP1255
|
|
||||||
# yi_US.UTF-8 UTF-8
|
|
||||||
# yo_NG UTF-8
|
|
||||||
# yue_HK UTF-8
|
|
||||||
# zh_CN GB2312
|
|
||||||
# zh_CN.GB18030 GB18030
|
|
||||||
# zh_CN.GBK GBK
|
|
||||||
# zh_CN.UTF-8 UTF-8
|
|
||||||
# zh_HK BIG5-HKSCS
|
|
||||||
# zh_HK.UTF-8 UTF-8
|
|
||||||
# zh_SG GB2312
|
|
||||||
# zh_SG.GBK GBK
|
|
||||||
# zh_SG.UTF-8 UTF-8
|
|
||||||
# zh_TW BIG5
|
|
||||||
# zh_TW.EUC-TW EUC-TW
|
|
||||||
# zh_TW.UTF-8 UTF-8
|
|
||||||
# zu_ZA ISO-8859-1
|
|
||||||
# zu_ZA.UTF-8 UTF-8
|
|
@@ -1,2 +0,0 @@
|
|||||||
# Global .profile -- add /sbin_1
|
|
||||||
PATH=$PATH:/sbin_1:/xbin
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
|||||||
#! /bin/true
|
|
@@ -1 +0,0 @@
|
|||||||
#! /bin/true
|
|
@@ -1,111 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="22"
|
|
||||||
height="22"
|
|
||||||
id="svg3049"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.91 r13725"
|
|
||||||
sodipodi:docname="run-build.svg"
|
|
||||||
inkscape:export-filename="/home/uri/.kde/share/icons/NITRUX-KDE/16x16/actions/view-right-new.png"
|
|
||||||
inkscape:export-xdpi="30"
|
|
||||||
inkscape:export-ydpi="30">
|
|
||||||
<defs
|
|
||||||
id="defs3051" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="34.047365"
|
|
||||||
inkscape:cx="3.5285805"
|
|
||||||
inkscape:cy="12.532131"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
showgrid="true"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
inkscape:window-width="2560"
|
|
||||||
inkscape:window-height="955"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="35"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:showpageshadow="false"
|
|
||||||
borderlayer="true">
|
|
||||||
<sodipodi:guide
|
|
||||||
position="2.0000044,20.00003"
|
|
||||||
orientation="18,0"
|
|
||||||
id="guide4067" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="2.0000044,2.0000296"
|
|
||||||
orientation="0,18"
|
|
||||||
id="guide4069" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="20.000004,2.0000296"
|
|
||||||
orientation="-18,0"
|
|
||||||
id="guide4071" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="20.000004,20.00003"
|
|
||||||
orientation="0,-18"
|
|
||||||
id="guide4073" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="3.0000044,19.00003"
|
|
||||||
orientation="16,0"
|
|
||||||
id="guide4077" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="3.0000044,3.0000296"
|
|
||||||
orientation="0,16"
|
|
||||||
id="guide4079" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="19.000004,3.0000296"
|
|
||||||
orientation="-16,0"
|
|
||||||
id="guide4081" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="19.000004,19.00003"
|
|
||||||
orientation="0,-16"
|
|
||||||
id="guide4083" />
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid4085" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata3054">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Capa 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-421.71429,-525.79074)">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:2.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.55026455"
|
|
||||||
d="m 430.71429,533.79074 0,6 5,-3 -5,-3 z"
|
|
||||||
id="rect4144" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none"
|
|
||||||
d="M 11 3 C 10.32479 3.004 9.65279 3.092995 9 3.265625 L 9 4.2988281 L 9 4.3105469 A 7 7 0 0 0 7.6835938 4.8554688 L 7.6757812 4.8476562 L 6.9433594 4.1152344 C 5.7764094 4.8032844 4.8032844 5.7764094 4.1152344 6.9433594 L 4.6367188 7.4648438 L 4.8554688 7.6835938 A 7 7 0 0 0 4.3085938 9 L 4.2949219 9 L 3.2597656 9 C 3.0891456 9.65304 3.00187 10.32505 3 11 C 3.004 11.67521 3.093005 12.34721 3.265625 13 L 4.2988281 13 L 4.3105469 13 A 7 7 0 0 0 4.8554688 14.316406 L 4.6367188 14.535156 L 4.1152344 15.056641 C 4.8032844 16.223601 5.7763994 17.196716 6.9433594 17.884766 L 7.4648438 17.363281 L 7.6835938 17.144531 A 7 7 0 0 0 9 17.691406 L 9 18 L 9 18.740234 C 9.65304 18.910854 10.32504 18.99813 11 19 C 11.67496 18.99813 12.34696 18.910854 13 18.740234 L 13 18 L 13 17.691406 A 7 7 0 0 0 14.316406 17.144531 L 14.535156 17.363281 L 15.056641 17.884766 C 16.223601 17.196716 17.196716 16.223601 17.884766 15.056641 L 17.363281 14.535156 L 17.144531 14.316406 A 7 7 0 0 0 17.689453 13 L 17.701172 13 L 18.734375 13 C 18.907005 12.34721 18.996 11.67521 19 11 C 18.99813 10.32505 18.910854 9.65304 18.740234 9 L 17.705078 9 L 17.691406 9 A 7 7 0 0 0 17.144531 7.6835938 L 17.363281 7.4648438 L 17.884766 6.9433594 C 17.196716 5.7764094 16.223591 4.8032844 15.056641 4.1152344 L 14.324219 4.8476562 L 14.316406 4.8554688 A 7 7 0 0 0 13 4.3105469 L 13 4.2988281 L 13 3.265625 C 12.34721 3.092995 11.67521 3.004 11 3 z M 11 4 C 11.33491 4.0012 11.66956 4.0273719 12 4.0761719 L 12 4.0800781 L 12 5 L 12 5.0859375 A 6 6 0 0 1 14.470703 6.1152344 L 14.535156 6.0507812 L 15.185547 5.4003906 L 15.1875 5.3984375 C 15.72484 5.7991075 16.201446 6.2742469 16.603516 6.8105469 L 16.599609 6.8144531 L 15.949219 7.4648438 L 15.886719 7.5273438 A 6 6 0 0 1 16.910156 10 L 17 10 L 17.921875 10 L 17.925781 10 C 17.974081 10.33106 17.9995 10.66455 18 11 C 17.9988 11.33491 17.972628 11.66955 17.923828 12 L 17.919922 12 L 17 12 L 16.914062 12 A 6 6 0 0 1 15.884766 14.470703 L 15.949219 14.535156 L 16.599609 15.185547 L 16.601562 15.1875 C 16.200893 15.72484 15.725753 16.201456 15.189453 16.603516 L 15.185547 16.599609 L 14.535156 15.949219 L 14.472656 15.886719 A 6 6 0 0 1 12 16.910156 L 12 17 L 12 17.921875 L 12 17.925781 C 11.66894 17.974081 11.33545 17.9995 11 18 C 10.66455 17.9995 10.33106 17.974081 10 17.925781 L 10 17.921875 L 10 17 L 10 16.910156 A 6 6 0 0 1 7.5273438 15.886719 L 7.4648438 15.949219 L 6.8144531 16.599609 L 6.8105469 16.603516 C 6.2742469 16.201456 5.7991075 15.72484 5.3984375 15.1875 L 5.4003906 15.185547 L 6.0507812 14.535156 L 6.1152344 14.470703 A 6 6 0 0 1 5.0859375 12 L 5 12 L 4.0800781 12 L 4.0761719 12 C 4.0273719 11.66955 4.0012 11.33491 4 11 C 4.0005 10.66455 4.0259187 10.33106 4.0742188 10 L 4.078125 10 L 5 10 L 5.0898438 10 A 6 6 0 0 1 6.1132812 7.5273438 L 6.0507812 7.4648438 L 5.4003906 6.8144531 L 5.3964844 6.8105469 C 5.7985544 6.2742469 6.27516 5.7991075 6.8125 5.3984375 L 6.8144531 5.4003906 L 7.4648438 6.0507812 L 7.5292969 6.1152344 A 6 6 0 0 1 10 5.0859375 L 10 5 L 10 4.0800781 L 10 4.0761719 C 10.33044 4.0273719 10.66509 4.0012 11 4 z "
|
|
||||||
transform="translate(421.71429,525.79074)"
|
|
||||||
id="path3344" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 6.3 KiB |
@@ -1,18 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
||||||
<defs
|
|
||||||
id="defs3051">
|
|
||||||
<style
|
|
||||||
type="text/css"
|
|
||||||
id="current-color-scheme">
|
|
||||||
.ColorScheme-Text {
|
|
||||||
color:#4d4d4d;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
|
||||||
d="m 5,9 0,1 -1,0 0,12 1,0 0,1 22,0 0,-1 1,0 0,-12 -1,0 0,-1 z m 1,1 20,0 a 1,1 0 0 0 1,1 l 0,10 a 1,1 0 0 0 -1,1 L 6,22 A 1,1 0 0 0 5,21 L 5,11 a 1,1 0 0 0 1,-1 m 10,2 a 4,4 0 0 0 -4,4 4,4 0 0 0 4,4 4,4 0 0 0 4,-4 4,4 0 0 0 -4,-4 m 0,1 a 3,3 0 0 1 3,3 3,3 0 0 1 -3,3 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3"
|
|
||||||
id="path76"
|
|
||||||
class="ColorScheme-Text"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 675 B |
@@ -1,112 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="22"
|
|
||||||
height="22"
|
|
||||||
id="svg3813"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.91 r13725"
|
|
||||||
sodipodi:docname="kr_diskusage.svg">
|
|
||||||
<defs
|
|
||||||
id="defs3815" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="32"
|
|
||||||
inkscape:cx="14.427263"
|
|
||||||
inkscape:cy="11.039521"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
showgrid="true"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1021"
|
|
||||||
inkscape:window-x="-4"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:showpageshadow="false">
|
|
||||||
<inkscape:grid
|
|
||||||
type="xygrid"
|
|
||||||
id="grid4109" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="2.0000072,19.999993"
|
|
||||||
orientation="18,0"
|
|
||||||
id="guide4115" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="2.0000072,1.9999929"
|
|
||||||
orientation="0,18"
|
|
||||||
id="guide4117" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="20.000007,1.9999929"
|
|
||||||
orientation="-18,0"
|
|
||||||
id="guide4119" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="20.000007,19.999993"
|
|
||||||
orientation="0,-18"
|
|
||||||
id="guide4121" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="3.0000072,18.999993"
|
|
||||||
orientation="16,0"
|
|
||||||
id="guide4123" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="3.0000072,2.9999929"
|
|
||||||
orientation="0,16"
|
|
||||||
id="guide4125" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="19.000007,2.9999929"
|
|
||||||
orientation="-16,0"
|
|
||||||
id="guide4127" />
|
|
||||||
<sodipodi:guide
|
|
||||||
position="19.000007,18.999993"
|
|
||||||
orientation="0,-16"
|
|
||||||
id="guide4129" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<metadata
|
|
||||||
id="metadata3818">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Capa 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(-378.85714,-540.07647)">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="color:#000000;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 389.85714,543.07647 c -4.432,0 -8,3.568 -8,8 0,4.432 3.568,8 8,8 4.432,0 8,-3.568 8,-8 0,-4.432 -3.568,-8 -8,-8 z m 0,1 c 3.878,0 7,3.122 7,7 0,3.878 -3.122,7 -7,7 -3.878,0 -7,-3.122 -7,-7 0,-3.878 3.122,-7 7,-7 z"
|
|
||||||
id="rect4185" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="color:#000000;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 389.85714,547.07647 c -2.216,0 -4,1.784 -4,4 0,2.216 1.784,4 4,4 2.216,0 4,-1.784 4,-4 0,-2.216 -1.784,-4 -4,-4 z m 0,1 c 0.46399,0 0.89764,0.11233 1.28906,0.29883 0.18113,-0.1837 0.43139,-0.29883 0.71094,-0.29883 0.554,0 1,0.446 1,1 0,0.27955 -0.11513,0.52981 -0.29883,0.71094 0.18651,0.39142 0.29883,0.82507 0.29883,1.28906 0,1.662 -1.338,3 -3,3 -1.662,0 -3,-1.338 -3,-3 0,-1.662 1.338,-3 3,-3 z"
|
|
||||||
id="rect4225" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="color:#000000;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 391.85714,547.07647 c -1.108,0 -2,0.892 -2,2 0,1.108 0.892,2 2,2 1.108,0 2,-0.892 2,-2 0,-1.108 -0.892,-2 -2,-2 z m 0,1 c 0.554,0 1,0.446 1,1 0,0.554 -0.446,1 -1,1 -0.554,0 -1,-0.446 -1,-1 0,-0.554 0.446,-1 1,-1 z"
|
|
||||||
id="rect4230" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 5.6 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user