Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a30683ea61 | ||
![]() |
8577821884 | ||
![]() |
8161e77d1f | ||
![]() |
ad5226c8f7 | ||
![]() |
06bd19be90 | ||
![]() |
4c9faf3c98 | ||
![]() |
7947a06b60 | ||
![]() |
d4b84cd9a8 | ||
![]() |
3accd30ad1 | ||
![]() |
3b88b45c9f | ||
![]() |
14869bec6a | ||
![]() |
1161b169ee | ||
![]() |
a9b9fcd9ad |
@@ -1,32 +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"
|
||||
SpacesInAngles: "true"
|
||||
SpacesInParentheses: "true"
|
||||
SpacesInSquareBrackets: "true"
|
||||
Standard: Cpp11
|
15
.gitattributes
vendored
15
.gitattributes
vendored
@@ -1,11 +1,6 @@
|
||||
.editorconfig export-ignore
|
||||
.gitattributes export-ignore
|
||||
.github export-ignore
|
||||
.gitignore export-ignore
|
||||
.gitmodules export-ignore
|
||||
.travis.yml export-ignore
|
||||
.tx export-ignore
|
||||
|
||||
src/modules/testmodule.py export-ignore
|
||||
.tx/* export-ignore
|
||||
hacking/* export-ignore
|
||||
HACKING.md export-ignore
|
||||
.editorconfig export-ignore
|
||||
src/modules/testmodule.py 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.
|
10
.gitignore
vendored
10
.gitignore
vendored
@@ -21,7 +21,6 @@ __pycache__
|
||||
*.pro.user
|
||||
*.pro.user.*
|
||||
*.moc
|
||||
*.qmlc
|
||||
moc_*.cpp
|
||||
qrc_*.cpp
|
||||
ui_*.h
|
||||
@@ -36,17 +35,8 @@ Makefile*
|
||||
qtcreator-build
|
||||
CMakeLists.txt.user
|
||||
|
||||
# KDevelop
|
||||
*.kdev4
|
||||
|
||||
# PyCharm
|
||||
.idea
|
||||
|
||||
# Visual Studio Code
|
||||
.vscode
|
||||
|
||||
# Backup files
|
||||
*~
|
||||
|
||||
# Kate
|
||||
*.kate-swp
|
||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -0,0 +1,3 @@
|
||||
[submodule "thirdparty/libcrashreporter-qt"]
|
||||
path = thirdparty/libcrashreporter-qt
|
||||
url = https://github.com/dschmidt/libcrashreporter-qt
|
||||
|
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"
|
||||
|
17
.tx/config
17
.tx/config
@@ -7,20 +7,3 @@ source_file = lang/calamares_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
|
||||
[calamares.dummypythonqt]
|
||||
file_filter = src/modules/dummypythonqt/lang/<lang>/LC_MESSAGES/dummypythonqt.po
|
||||
source_file = src/modules/dummypythonqt/lang/dummypythonqt.pot
|
||||
source_lang = en
|
||||
|
||||
[calamares.fdo]
|
||||
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;
|
||||
};
|
46
AUTHORS
46
AUTHORS
@@ -1,45 +1 @@
|
||||
# MAINTAINER
|
||||
|
||||
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 Auguer
|
||||
- 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
|
||||
Teo Mrnjavac <teo@kde.org>
|
||||
|
587
CHANGES
587
CHANGES
@@ -1,587 +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.17 (unreleased) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- No external contributions.
|
||||
|
||||
## Core ##
|
||||
- No changes to core functionality
|
||||
|
||||
## Modules ##
|
||||
- No changes to module functionality
|
||||
|
||||
|
||||
# 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`.
|
568
CMakeLists.txt
568
CMakeLists.txt
@@ -1,247 +1,35 @@
|
||||
# === 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+
|
||||
# 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.
|
||||
# BUILD_<foo> : choose additional things to build
|
||||
# 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.
|
||||
project( calamares CXX )
|
||||
|
||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
||||
project( CALAMARES
|
||||
VERSION 3.2.16
|
||||
LANGUAGES C CXX )
|
||||
# The partition manager uses ECM but ECMConfig.cmake
|
||||
# will complain if we require CMake less than 2.8.13,
|
||||
# so never change this.
|
||||
cmake_minimum_required( VERSION 2.8.12 )
|
||||
|
||||
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( BUILD_TESTING "Build the testing tree." ON )
|
||||
option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON )
|
||||
option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF )
|
||||
option( WITH_KF5Crash "Enable crash reporting with KCrash." ON )
|
||||
|
||||
|
||||
### 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).
|
||||
#
|
||||
# Currently, only USE_services is in use (to pick only one of the two
|
||||
# modules, systemd or openrc).
|
||||
set( USE_services "" CACHE STRING "Select the services module to use" )
|
||||
|
||||
### 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 61 languages
|
||||
set( _tx_complete ca cs_CZ da fi_FI he hr ja lt pt_BR sq )
|
||||
set( _tx_good ast de es es_MX et fr gl hi hu id it_IT ko nl pl
|
||||
pt_PT ru sk tr_TR zh_TW )
|
||||
set( _tx_ok ar be bg el en_GB es_PR eu is ml mr nb ro sl sr
|
||||
sr@latin sv th uk zh_CN )
|
||||
set( _tx_incomplete ca@valencia eo fa fr_CH gu kk kn lo 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()
|
||||
# CMake 3.9, 3.10 compatibility
|
||||
if( POLICY CMP0071 )
|
||||
cmake_policy( SET CMP0071 NEW )
|
||||
endif()
|
||||
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()
|
||||
|
||||
|
||||
### C++ SETUP
|
||||
#
|
||||
set( CMAKE_CXX_STANDARD 14 )
|
||||
set( CMAKE_CXX_STANDARD_REQUIRED ON )
|
||||
set( CMAKE_C_STANDARD 99 )
|
||||
set( CMAKE_C_STANDARD_REQUIRED ON )
|
||||
|
||||
# Debugging flags
|
||||
#
|
||||
# Possible debugging flags are:
|
||||
# - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone
|
||||
# widget and enables chatty debug logging, for dealing with the timezone
|
||||
# location database.
|
||||
# - DEBUG_FILESYSTEMS does extra logging and checking when looking at
|
||||
# partition configuration. Lists known KPMCore FS types.
|
||||
#
|
||||
# The flags listed here are enabled in Debug builds. By default, none
|
||||
# are **actually** listed, because they're for such specific scenarios.
|
||||
set( _enable_debug_flags
|
||||
# DEBUG_TIMEZONES
|
||||
# DEBUG_FILESYSTEMS
|
||||
)
|
||||
# Add those flags to the CXX flags in a suitable format.
|
||||
foreach( _edf ${_enable_debug_flags} )
|
||||
string( APPEND CMAKE_CXX_FLAGS_DEBUG " -D${_edf}" )
|
||||
endforeach()
|
||||
|
||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
||||
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||
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_MINSIZEREL "-Os -DNDEBUG" )
|
||||
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
||||
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||
|
||||
# Clang warnings: doing *everything* is counter-productive, since it warns
|
||||
# about things which we can't fix (e.g. C++98 incompatibilities, but
|
||||
# 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 "${CMAKE_CXX_FLAGS} -Weverything -std=c++14" )
|
||||
set( CMAKE_CXX_FLAGS_DEBUG "-g" )
|
||||
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_TOOLCHAIN_PREFIX "llvm-" )
|
||||
|
||||
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
|
||||
|
||||
set( CALAMARES_AUTOMOC_OPTIONS "-butils/moc-warnings.h" )
|
||||
set( CALAMARES_AUTOUIC_OPTIONS --include utils/moc-warnings.h )
|
||||
else()
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -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='/* */'" )
|
||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99" )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wl,--no-undefined" )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
||||
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_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR
|
||||
CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9 )
|
||||
@@ -250,204 +38,72 @@ if( CMAKE_COMPILER_IS_GNUCXX )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include( FeatureSummary )
|
||||
include( CMakeColors )
|
||||
cmake_policy( SET CMP0023 OLD )
|
||||
cmake_policy( SET CMP0028 NEW ) # double colons in KF5::Foo and Qt5::Foo are necessarily IMPORTED or ALIAS targets, don't search further
|
||||
|
||||
|
||||
### DEPENDENCIES
|
||||
#
|
||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui Widgets LinguistTools Svg Quick QuickWidgets )
|
||||
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)
|
||||
# Keep cmake 3.0 quiet
|
||||
if( POLICY CMP0043 )
|
||||
cmake_policy( SET CMP0043 OLD )
|
||||
endif()
|
||||
|
||||
find_package( KF5 QUIET COMPONENTS CoreAddons Crash )
|
||||
set_package_properties(
|
||||
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 )
|
||||
set( WITH_KF5Crash OFF )
|
||||
include( MacroOptionalFindPackage )
|
||||
include( MacroLogFeature )
|
||||
|
||||
set( QT_VERSION 5.4.0 )
|
||||
|
||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg Quick QuickWidgets )
|
||||
find_package( YAMLCPP 0.5.1 REQUIRED )
|
||||
find_package( PolkitQt5-1 REQUIRED )
|
||||
|
||||
option( WITH_PYTHON "Enable Python modules support." ON )
|
||||
option( WITH_CRASHREPORTER "Build with CrashReporter" ON )
|
||||
|
||||
if( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" OR NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libcrashreporter-qt/CMakeLists.txt" )
|
||||
message( STATUS "Build of crashreporter disabled." )
|
||||
set( WITH_CRASHREPORTER OFF )
|
||||
endif()
|
||||
|
||||
if( BUILD_TESTING )
|
||||
enable_testing()
|
||||
endif ()
|
||||
|
||||
find_package( PythonLibs ${PYTHONLIBS_VERSION} )
|
||||
set_package_properties(
|
||||
PythonLibs PROPERTIES
|
||||
DESCRIPTION "C interface libraries for the Python 3 interpreter."
|
||||
URL "http://python.org"
|
||||
PURPOSE "Python 3 is used for Python job modules."
|
||||
macro_optional_find_package( PythonLibs 3.3 )
|
||||
macro_log_feature(
|
||||
PYTHONLIBS_FOUND
|
||||
"Python"
|
||||
"C interface libraries for the Python 3 interpreter."
|
||||
"http://python.org"
|
||||
FALSE "3.3"
|
||||
"Python 3 is used for some Calamares job modules."
|
||||
)
|
||||
|
||||
if ( PYTHONLIBS_FOUND )
|
||||
include( BoostPython3 )
|
||||
find_boost_python3( ${BOOSTPYTHON_VERSION} ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND )
|
||||
set_package_properties(
|
||||
Boost PROPERTIES
|
||||
PURPOSE "Boost.Python is used for Python job modules."
|
||||
)
|
||||
|
||||
find_package( PythonQt )
|
||||
set_package_properties( PythonQt PROPERTIES
|
||||
DESCRIPTION "A Python embedding solution for Qt applications."
|
||||
URL "http://pythonqt.sourceforge.net"
|
||||
PURPOSE "PythonQt is used for Python view modules."
|
||||
find_boost_python3( 1.54.0 ${PYTHONLIBS_VERSION_STRING} CALAMARES_BOOST_PYTHON3_FOUND )
|
||||
macro_log_feature(
|
||||
CALAMARES_BOOST_PYTHON3_FOUND
|
||||
"Boost.Python"
|
||||
"A C++ library which enables seamless interoperability between C++ and Python 3."
|
||||
"http://www.boost.org"
|
||||
FALSE "1.54.0"
|
||||
"Boost.Python is used for interfacing with Calamares job modules written in Python 3."
|
||||
)
|
||||
endif()
|
||||
|
||||
if( NOT PYTHONLIBS_FOUND OR NOT CALAMARES_BOOST_PYTHON3_FOUND )
|
||||
message(STATUS "Disabling Boost::Python modules")
|
||||
if ( PYTHONLIBS_NOTFOUND OR NOT CALAMARES_BOOST_PYTHON3_FOUND )
|
||||
set( WITH_PYTHON OFF )
|
||||
endif()
|
||||
if( NOT PYTHONLIBS_FOUND OR NOT PYTHONQT_FOUND )
|
||||
message(STATUS "Disabling PythonQt modules")
|
||||
set( WITH_PYTHONQT OFF )
|
||||
endif()
|
||||
|
||||
### Transifex Translation status
|
||||
#
|
||||
# Construct language lists for use. If there are p_tx* variables,
|
||||
# then run an extra cmake-time check for consistency of the old
|
||||
# (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()
|
||||
###
|
||||
### 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" )
|
||||
set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX es eu fr hu id is it_IT ja lt nl pl pt_BR pt_PT ro ru sv th tr_TR zh_CN zh_TW )
|
||||
|
||||
# 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()
|
||||
set( CALAMARES_VERSION_MAJOR 2 )
|
||||
set( CALAMARES_VERSION_MINOR 2 )
|
||||
set( CALAMARES_VERSION_PATCH 3 )
|
||||
set( CALAMARES_VERSION_RC 0 )
|
||||
|
||||
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
|
||||
|
||||
|
||||
### 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_SHORT "${CALAMARES_VERSION}" )
|
||||
if( CALAMARES_VERSION_RC )
|
||||
@@ -468,15 +124,6 @@ if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" )
|
||||
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
|
||||
add_definitions( "-DQT_STRICT_ITERATORS" )
|
||||
|
||||
@@ -503,15 +150,24 @@ configure_file(
|
||||
)
|
||||
|
||||
# Early configure these files as we need them later on
|
||||
set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
||||
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 )
|
||||
|
||||
set( THIRDPARTY_DIR "${CMAKE_SOURCE_DIR}/thirdparty" )
|
||||
|
||||
add_subdirectory( thirdparty )
|
||||
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")
|
||||
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" )
|
||||
@@ -531,7 +187,6 @@ file( RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMA
|
||||
|
||||
configure_file( CalamaresConfig.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" @ONLY )
|
||||
configure_file( CalamaresConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" @ONLY )
|
||||
configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY )
|
||||
|
||||
# Install the cmake files
|
||||
install(
|
||||
@@ -539,13 +194,10 @@ install(
|
||||
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake"
|
||||
"${PROJECT_BINARY_DIR}/CalamaresUse.cmake"
|
||||
"CMakeModules/CalamaresAddPlugin.cmake"
|
||||
"CMakeModules/CalamaresAddModuleSubdirectory.cmake"
|
||||
"CMakeModules/CalamaresAddLibrary.cmake"
|
||||
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
||||
"CMakeModules/CalamaresAddTranslations.cmake"
|
||||
"CMakeModules/CalamaresAutomoc.cmake"
|
||||
"CMakeModules/CMakeColors.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}"
|
||||
)
|
||||
@@ -558,23 +210,19 @@ install(
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
|
||||
if( INSTALL_CONFIG )
|
||||
install(
|
||||
FILES
|
||||
settings.conf
|
||||
DESTINATION
|
||||
share/calamares
|
||||
)
|
||||
endif()
|
||||
install(
|
||||
FILES
|
||||
settings.conf
|
||||
DESTINATION
|
||||
share/calamares
|
||||
)
|
||||
|
||||
if( INSTALL_POLKIT )
|
||||
install(
|
||||
FILES
|
||||
com.github.calamares.calamares.policy
|
||||
DESTINATION
|
||||
"${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
||||
)
|
||||
endif()
|
||||
install(
|
||||
FILES
|
||||
com.github.calamares.calamares.policy
|
||||
DESTINATION
|
||||
"${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
@@ -583,13 +231,6 @@ install(
|
||||
${CMAKE_INSTALL_DATADIR}/applications
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
man/calamares.8
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_MANDIR}/man8/
|
||||
)
|
||||
|
||||
# uninstall target
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||
@@ -600,28 +241,3 @@ configure_file(
|
||||
add_custom_target( uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
||||
)
|
||||
|
||||
### CMAKE SUMMARY REPORT
|
||||
#
|
||||
get_directory_property( SKIPPED_MODULES
|
||||
DIRECTORY src/modules
|
||||
DEFINITION LIST_SKIPPED_MODULES
|
||||
)
|
||||
calamares_explain_skipped_modules( ${SKIPPED_MODULES} )
|
||||
|
||||
feature_summary(
|
||||
WHAT DISABLED_FEATURES
|
||||
DESCRIPTION "The following features have been disabled:"
|
||||
QUIET_ON_EMPTY
|
||||
)
|
||||
feature_summary(
|
||||
WHAT OPTIONAL_PACKAGES_NOT_FOUND
|
||||
DESCRIPTION "The following OPTIONAL packages were not found:"
|
||||
QUIET_ON_EMPTY
|
||||
)
|
||||
feature_summary(
|
||||
WHAT REQUIRED_PACKAGES_NOT_FOUND
|
||||
FATAL_ON_MISSING_REQUIRED_PACKAGES
|
||||
DESCRIPTION "The following REQUIRED packages were not found:"
|
||||
QUIET_ON_EMPTY
|
||||
)
|
||||
|
@@ -15,64 +15,43 @@
|
||||
# libboost_python-3.4.so
|
||||
# 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
|
||||
# names. By default it tries "python3", "python-py$suffix" and
|
||||
# "python-$dotsuffix", where suffix is based on the `python_version` argument.
|
||||
# One can supply a custom component name by setting the
|
||||
# `CALAMARES_BOOST_PYTHON3_COMPONENT` variable at CMake time.
|
||||
|
||||
set( CALAMARES_BOOST_PYTHON3_COMPONENT python3 CACHE STRING
|
||||
"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'."
|
||||
)
|
||||
|
||||
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 )
|
||||
set( ${found_var} ${_fbp_uc_name} )
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro( find_boost_python3 boost_version python_version found_var )
|
||||
set( ${found_var} OFF )
|
||||
set( _fbp_found OFF )
|
||||
|
||||
# turns "3.4.123abc" into "34"
|
||||
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)
|
||||
_find_boost_python3_int( ${boost_version} python${_fbp_python_short_version} _fbp_found )
|
||||
endif()
|
||||
foreach( _fbp_name ${CALAMARES_BOOST_PYTHON3_COMPONENT} python-py${_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()
|
||||
|
||||
if (NOT _fbp_found)
|
||||
if (NOT ${found_var})
|
||||
# The following loop changes the searched name for Gentoo based distributions
|
||||
# turns "3.4.123abc" into "3.4"
|
||||
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()
|
||||
|
||||
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()
|
||||
|
@@ -1,16 +1,8 @@
|
||||
if(NOT WIN32)
|
||||
set(_use_color ON)
|
||||
if("0" STREQUAL "$ENV{CLICOLOR}")
|
||||
set(_use_color OFF)
|
||||
endif()
|
||||
if("0" STREQUAL "$ENV{CLICOLOR_FORCE}")
|
||||
set(_use_color OFF)
|
||||
endif()
|
||||
if(NOT CMAKE_COLOR_MAKEFILE)
|
||||
set(_use_color OFF)
|
||||
endif()
|
||||
|
||||
if(_use_color)
|
||||
# [ -t 2 ] tests whether stderr is interactive.
|
||||
# The negation '!' is because for POSIX shells, 0 is true and 1 is false.
|
||||
execute_process(COMMAND test ! -t 2 RESULT_VARIABLE IS_STDERR_INTERACTIVE)
|
||||
if(IS_STDERR_INTERACTIVE)
|
||||
string(ASCII 27 Esc)
|
||||
set(ColorReset "${Esc}[m")
|
||||
set(ColorBold "${Esc}[1m")
|
||||
@@ -28,5 +20,5 @@ if(NOT WIN32)
|
||||
set(BoldMagenta "${Esc}[1;35m")
|
||||
set(BoldCyan "${Esc}[1;36m")
|
||||
set(BoldWhite "${Esc}[1;37m")
|
||||
endif()
|
||||
endif(IS_STDERR_INTERACTIVE)
|
||||
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+
|
||||
# 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,172 +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+
|
||||
# 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 )
|
||||
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
||||
|
||||
# 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 ${WITH_PYTHONQT} )
|
||||
set( _mod_reason "No PythonQt support" )
|
||||
set( _mod_testing OFF )
|
||||
elseif ( MODULE_INTERFACE MATCHES "python" )
|
||||
set( _mod_enabled ${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 "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" )
|
||||
install_calamares_gettext_translations(
|
||||
${SUBDIRECTORY}
|
||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/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 ( BUILD_TESTING AND _mod_enabled AND _mod_testing )
|
||||
add_test(
|
||||
NAME load-${SUBDIRECTORY}
|
||||
COMMAND loadmodule ${SUBDIRECTORY}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
@@ -1,188 +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+
|
||||
# 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]
|
||||
# [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_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 )
|
||||
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}" )
|
||||
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()
|
||||
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,177 +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+
|
||||
# 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} )
|
||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}<file>calamares_${lang}.qm</file>\n" )
|
||||
list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/calamares_${lang}.ts" )
|
||||
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+
|
||||
# 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()
|
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+
|
||||
# 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( CalamaresAutomoc )
|
||||
|
||||
function(calamares_add_library)
|
||||
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
||||
set(NAME ${ARGV0})
|
||||
set(options NO_INSTALL NO_VERSION)
|
||||
set(oneValueArgs NAME EXPORT_MACRO TARGET_TYPE EXPORT VERSION SOVERSION INSTALL_BINDIR RESOURCES)
|
||||
set(multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS)
|
||||
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 QT5_MODULES)
|
||||
cmake_parse_arguments(LIBRARY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
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})
|
||||
|
||||
# qt stuff
|
||||
include_directories(${CMAKE_CURRENT_LIST_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
|
||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}")
|
||||
qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}")
|
||||
@@ -77,30 +45,31 @@ function(calamares_add_library)
|
||||
add_library(${target} SHARED ${LIBRARY_SOURCES})
|
||||
endif()
|
||||
|
||||
calamares_automoc(${target})
|
||||
if(LIBRARY_UI)
|
||||
calamares_autouic(${target} ${LIBRARY_UI})
|
||||
endif()
|
||||
# HACK: add qt modules - every lib should define its own set of modules
|
||||
qt5_use_modules(${target} Core Gui Widgets ${LIBRARY_QT5_MODULES})
|
||||
|
||||
# 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)
|
||||
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO})
|
||||
endif()
|
||||
|
||||
if(LIBRARY_COMPILE_DEFINITIONS)
|
||||
set( _lib_definitions "${LIBRARY_EXPORT_MACRO}" ${LIBRARY_COMPILE_DEFINITIONS} )
|
||||
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS "${_lib_definitions}")
|
||||
# Dear CMake, i hate you! Sincerely, domme
|
||||
# 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()
|
||||
|
||||
# add link targets
|
||||
target_link_libraries(${target}
|
||||
LINK_PUBLIC ${CALAMARES_LIBRARIES}
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
Qt5::Widgets
|
||||
${LIBRARY_QT5_MODULES}
|
||||
)
|
||||
target_link_libraries(${target} ${CALAMARES_LIBRARIES})
|
||||
if(LIBRARY_LINK_LIBRARIES)
|
||||
target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES})
|
||||
target_link_libraries(${target} ${LIBRARY_LINK_LIBRARIES})
|
||||
endif()
|
||||
if(LIBRARY_LINK_PRIVATE_LIBRARIES)
|
||||
target_link_libraries(${target} LINK_PRIVATE ${LIBRARY_LINK_PRIVATE_LIBRARIES})
|
||||
@@ -125,6 +94,9 @@ function(calamares_add_library)
|
||||
set(LIBRARY_INSTALL_LIBDIR "${LIBRARY_INSTALL_BINDIR}")
|
||||
endif()
|
||||
|
||||
#message("INSTALL_BINDIR: ${LIBRARY_INSTALL_BINDIR}")
|
||||
#message("INSTALL_LIBDIR: ${LIBRARY_INSTALL_LIBDIR}")
|
||||
|
||||
# make installation optional, maybe useful for dummy plugins one day
|
||||
if(NOT LIBRARY_NO_INSTALL)
|
||||
include(GNUInstallDirs)
|
49
CalamaresAddModuleSubdirectory.cmake
Normal file
49
CalamaresAddModuleSubdirectory.cmake
Normal file
@@ -0,0 +1,49 @@
|
||||
include( CMakeColors )
|
||||
|
||||
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
||||
|
||||
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} )
|
||||
|
||||
# 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 )
|
||||
|
||||
get_filename_component( FLEXT ${MODULE_FILE} EXT )
|
||||
if( "${FLEXT}" STREQUAL ".conf" )
|
||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
||||
DESTINATION ${MODULE_DATA_DESTINATION} )
|
||||
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}" )
|
||||
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}" )
|
||||
if( MODULE_CONFIG_FILES )
|
||||
message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" )
|
||||
endif()
|
||||
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 )
|
||||
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}" )
|
||||
|
||||
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( PLUGIN_CONFIG_FILES )
|
||||
message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${PLUGIN_CONFIG_FILES} => ${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} )
|
||||
|
||||
foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} )
|
||||
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
||||
DESTINATION ${PLUGIN_DATA_DESTINATION} )
|
||||
endforeach()
|
||||
endfunction()
|
@@ -1,16 +1,8 @@
|
||||
# Config file for the Calamares package
|
||||
#
|
||||
# - Config file for the Calamares package
|
||||
# It defines the following variables
|
||||
# CALAMARES_INCLUDE_DIRS - include directories for Calamares
|
||||
# CALAMARES_LIBRARIES - libraries to link against
|
||||
# CALAMARES_USE_FILE - name of a convenience include
|
||||
# CALAMARES_APPLICATION_NAME - human-readable application name
|
||||
#
|
||||
# Typical use is:
|
||||
#
|
||||
# find_package(Calamares REQUIRED)
|
||||
# include("${CALAMARES_USE_FILE}")
|
||||
#
|
||||
# CALAMARES_EXECUTABLE - the bar executable
|
||||
|
||||
# Compute paths
|
||||
get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
@@ -26,7 +18,4 @@ include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake")
|
||||
|
||||
# These are IMPORTED targets created by CalamaresLibraryDepends.cmake
|
||||
set(CALAMARES_LIBRARIES calamares)
|
||||
|
||||
# Convenience variables
|
||||
set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake")
|
||||
set(CALAMARES_APPLICATION_NAME "Calamares")
|
||||
|
@@ -1,29 +1,12 @@
|
||||
# A setup-cmake-things-for-Calamares module.
|
||||
#
|
||||
# This module handles looking for dependencies and including
|
||||
# all of the Calamares macro modules, so that you can focus
|
||||
# on just using the macros to build Calamares modules.
|
||||
# Typical use looks like this:
|
||||
#
|
||||
# ```
|
||||
# find_package( Calamares REQUIRED )
|
||||
# include( "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake" )
|
||||
# ```
|
||||
#
|
||||
# The first CMake command finds Calamares (which will contain
|
||||
# this file), then adds the found location to the search path,
|
||||
# and then includes this file. After that, you can use
|
||||
# Calamares module and plugin macros.
|
||||
#FIXME: this duplicates top level cmakelists: how can we reduce code duplication?
|
||||
|
||||
if( NOT CALAMARES_CMAKE_DIR )
|
||||
message( FATAL_ERROR "Use find_package(Calamares) first." )
|
||||
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()
|
||||
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} )
|
||||
|
||||
find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools )
|
||||
|
||||
include( CalamaresAddLibrary )
|
||||
include( CalamaresAddModuleSubdirectory )
|
||||
include( CalamaresAddPlugin )
|
||||
include( CalamaresAddBrandingSubdirectory )
|
||||
|
||||
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
|
@@ -1,19 +1,13 @@
|
||||
Hacking on Calamares
|
||||
====================
|
||||
|
||||
These are the guidelines for hacking on Calamares. Except for the licensing,
|
||||
which **must** be GPLv3+, these are guidelines and -- like PEP8 -- the most
|
||||
important thing is to know when you can ignore them.
|
||||
|
||||
|
||||
Licensing
|
||||
---------
|
||||
Calamares is released under the terms of the GNU GPL, version 3 or later.
|
||||
Every source file must have a license header, with a list of copyright holders and years.
|
||||
Calamares is released under the terms of the GNU GPL, version 3 or later. Every source file must have a license header, with a list of copyright holders and years.
|
||||
|
||||
Example:
|
||||
```
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
/* === 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>
|
||||
@@ -32,21 +26,10 @@ Example:
|
||||
* 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.
|
||||
|
||||
Please add your name to files you touch when making any contribution (even if
|
||||
it's just a typo-fix which might not be copyrightable in all jurisdictions).
|
||||
|
||||
|
||||
Formatting C++
|
||||
--------------
|
||||
This formatting guide applies to C++ code only; for Python modules, we use
|
||||
[pycodestyle](https://github.com/PyCQA/pycodestyle) to apply a check of
|
||||
some PEP8 guidelines.
|
||||
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.
|
||||
@@ -54,14 +37,12 @@ some PEP8 guidelines.
|
||||
* No space before brackets, except for keywords, for example `function( argument )` but
|
||||
`if ( condition )`.
|
||||
* For pointer and reference variable declarations, put a space before the variable name
|
||||
and no space between the type and the `*` or `&`, e.g. `int* p`.
|
||||
* `for`, `if`, `else`, `while` and similar statements put the braces on the next line,
|
||||
if the following block is more than one statement. Always use braces.
|
||||
* Function and class definitions have their braces on separate lines.
|
||||
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.
|
||||
* Lambdas are preferrably indented to a 4-space tab, even when passed as an
|
||||
argument to functions.
|
||||
|
||||
Example:
|
||||
```
|
||||
@@ -71,9 +52,8 @@ MyClass::myMethod( QStringList list, const QString& name )
|
||||
if ( list.isEmpty() )
|
||||
return false;
|
||||
|
||||
cDebug() << "Items in list ..";
|
||||
foreach ( const QString& string, list )
|
||||
cDebug() << " .." << string;
|
||||
cDebug() << "Current string is " << string;
|
||||
|
||||
switch ( m_enumValue )
|
||||
{
|
||||
@@ -86,18 +66,11 @@ MyClass::myMethod( QStringList list, const QString& name )
|
||||
}
|
||||
```
|
||||
|
||||
You can use `clang-format` (version 7) to have Calamares sources formatted
|
||||
the right way. There is a `.clang-format` file that specifies the details.
|
||||
In general:
|
||||
```
|
||||
$ clang-format-7 -i -style=file <files>
|
||||
```
|
||||
`
|
||||
|
||||
**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.
|
||||
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
|
||||
------
|
||||
@@ -111,7 +84,6 @@ Naming
|
||||
* If it's a getter for a boolean, prefix with 'is', so `isCondition()`.
|
||||
* A setter is `setVariable( arg )`.
|
||||
|
||||
|
||||
Includes
|
||||
--------
|
||||
Header includes should be listed in the following order:
|
||||
@@ -124,9 +96,8 @@ Header includes should be listed in the following order:
|
||||
|
||||
They should also be sorted alphabetically for ease of locating them.
|
||||
|
||||
Includes in a header file should be kept to the absolute minimum, as to keep
|
||||
compile times short. This can be achieved by using forward declarations
|
||||
instead of includes, like `class QListView;`.
|
||||
Includes in a header file should be kept to the absolute minimum, as to keep compile times short. This can be achieved by using forward declarations instead of includes,
|
||||
like `class QListView;`.
|
||||
|
||||
Example:
|
||||
```
|
||||
@@ -145,7 +116,6 @@ Example:
|
||||
|
||||
Use include guards, not `#pragma once`.
|
||||
|
||||
|
||||
C++ tips
|
||||
--------
|
||||
All C++11 features are acceptable, and the use of new C++11 features is encouraged when
|
||||
@@ -158,8 +128,8 @@ range-based `for` syntax introduced with C++11 is preferred ([see this blog post
|
||||
|
||||
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
|
||||
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
|
||||
@@ -177,35 +147,10 @@ connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, [this]
|
||||
});
|
||||
```
|
||||
|
||||
[1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
|
||||
[2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax
|
||||
|
||||
|
||||
Debugging
|
||||
---------
|
||||
Use `cDebug()` from `utils/Logger.h`. You can pass a debug-level to the
|
||||
macro (6 is debugging, higher is less important). Use `cWarning()` for warning
|
||||
messages (equivalent to level 2) and `cError()` for errors (level 1). Warnings
|
||||
and errors will add relevant text automatically. See `libcalamares/utils/Logger.h`
|
||||
for details.
|
||||
|
||||
For log messages that are continued across multiple calls to `cDebug()`,
|
||||
in particular listing things, conventional formatting is as follows:
|
||||
* End the first debug message with ` ..`
|
||||
* Start the next debug message by outputting `Logger::SubEntry`
|
||||
|
||||
For single-outputs that need to be split across multiplt lines,
|
||||
output `Logger::Continuation`.
|
||||
Use `cDebug()` and `cLog()` from `utils/Logger.h`.
|
||||
|
||||
|
||||
Commit Messages
|
||||
---------------
|
||||
Keep commit messages short(-ish) and try to describe what is being changed
|
||||
*as well as why*. Use the commit keywords for GitHub, especially *FIXES:*
|
||||
to auto-close issues when they are resolved.
|
||||
|
||||
For functional changes to Calamares modules or libraries, try to put
|
||||
*[modulename]* in front of the first line of the commit message.
|
||||
|
||||
For non-functional changes to infrastructure, try to label the change
|
||||
with the kind of change, e.g. *CMake* or *i18n* or *Documentation*.
|
||||
[1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
|
||||
[2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax
|
@@ -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.
|
76
README.md
76
README.md
@@ -3,37 +3,71 @@
|
||||
|
||||
[](https://github.com/calamares/calamares/releases)
|
||||
[](https://calamares.io/ci/job/calamares-post_commit/)
|
||||
[](https://travis-ci.org/calamares/calamares)
|
||||
[](https://scan.coverity.com/projects/5389)
|
||||
[](https://github.com/calamares/calamares/blob/master/LICENSE)
|
||||
|
||||
| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Contribute](https://github.com/calamares/calamares/blob/master/ci/HACKING.md) | [Translate](https://www.transifex.com/projects/p/calamares/) | 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
|
||||
|
||||
Main:
|
||||
* Compiler with C++14 support: GCC >= 5 or Clang >= 3.5.1
|
||||
* CMake >= 3.3
|
||||
* Qt >= 5.9
|
||||
* Compiler with C++11 support: GCC >= 4.9.0 or Clang >= 3.5.1
|
||||
* CMake >= 2.8.12
|
||||
* Qt >= 5.3
|
||||
* 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)
|
||||
* Python >= 3.3
|
||||
* Boost.Python >= 1.55.0
|
||||
* dmidecode
|
||||
|
||||
Modules:
|
||||
* Individual modules may have their own requirements;
|
||||
these are listed in CMake output. Particular requirements (not complete):
|
||||
* *fsresizer* KPMCore >= 3.3
|
||||
* *partition* KPMCore >= 3.3
|
||||
* *users* LibPWQuality (optional)
|
||||
* welcome:
|
||||
* NetworkManager
|
||||
* UPower
|
||||
* partition:
|
||||
* extra-cmake-modules
|
||||
* KF5: KCoreAddons, KConfig, KI18n, KIconThemes, KIO, KService
|
||||
* KPMcore >= 2.1
|
||||
* sgdisk
|
||||
* bootloader:
|
||||
* systemd-boot or GRUB
|
||||
* sgdisk
|
||||
* unpackfs:
|
||||
* squashfs-tools
|
||||
* rsync
|
||||
|
||||
|
||||
### 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)
|
||||
|
||||
|
||||
### 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 ..
|
||||
$ make
|
||||
```
|
||||
|
||||
See [wiki](https://github.com/calamares/calamares/wiki) for up to date
|
||||
[building](https://github.com/calamares/calamares/wiki/Develop-Guide)
|
||||
and [deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
|
||||
instructions.
|
||||
#### Supported variables for CMake
|
||||
* `WITH_PYTHON` - if this is set to false, the Python module interface will not be built. Default is true.
|
||||
* `SKIP_MODULES` - takes a space-separated list of module names that should not be built even if present in `src/modules` (e.g. `cmake -DSKIP_MODULES="partition mount umount welcome" ..`). Default is empty.
|
||||
|
||||
### Design Notes
|
||||
Calamares is currently split as follows:
|
||||
1. __libcalamares__ - The back-end library.
|
||||
* 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,9 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Version=1.0
|
||||
Name=Install System
|
||||
Name=Calamares
|
||||
GenericName=System Installer
|
||||
Keywords=calamares;system;installer;
|
||||
TryExec=calamares
|
||||
Exec=pkexec /usr/bin/calamares
|
||||
Comment=Calamares — System Installer
|
||||
@@ -11,193 +10,3 @@ Icon=calamares
|
||||
Terminal=false
|
||||
StartupNotify=true
|
||||
Categories=Qt;System;
|
||||
X-AppStream-Ignore=true
|
||||
|
||||
Name[ar]=تثبيت النظام
|
||||
Icon[ar]=كالامارس
|
||||
GenericName[ar]=مثبت النظام
|
||||
Comment[ar]=كالامارس - مثبت النظام
|
||||
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[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]=깔라마레스 (Calamares)
|
||||
GenericName[ko]=시스템 설치 관리자
|
||||
Comment[ko]=깔라마레스 (Calamares) — 시스템 설치 관리자
|
||||
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[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,84 +0,0 @@
|
||||
The Calamares release process
|
||||
=============================
|
||||
|
||||
> As releases from *master* are now rolling when-they-are-ready releases,
|
||||
> some of these steps no longer are followed. In particular, -RC releases
|
||||
> are not done anymore (although the RC variable is set in `CMakeLists.txt`
|
||||
> to avoid accidents) and most things are automated through the release
|
||||
> script [RELEASE.sh](RELEASE.sh)
|
||||
|
||||
#### (0) A week in advance
|
||||
|
||||
* (Only releases from master)
|
||||
Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
|
||||
automatically once a week on master.
|
||||
* Build with clang -Weverything, fix what's relevant.
|
||||
```
|
||||
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.
|
||||
* (Only releases from master)
|
||||
Notify [translators][transifex]. In the dashboard there is an *Announcements*
|
||||
link that you can use to send a translation announcement.
|
||||
|
||||
[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview
|
||||
[transifex]: https://www.transifex.com/calamares/calamares/dashboard/
|
||||
|
||||
#### (1) Preparation
|
||||
|
||||
* Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set
|
||||
RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that.
|
||||
* Check `README.md` and everything `ci/HACKING.md`, make sure it's all still
|
||||
relevant. Run `ci/calamaresstyle` to check the C++ code style.
|
||||
Run pycodestyle on recently-modified Python modules, fix what makes sense.
|
||||
* Check defaults in `settings.conf` and other configuration files.
|
||||
* (Only releases from master)
|
||||
Pull latest translations from Transifex. We only push / pull translations
|
||||
from master, so longer-lived branches (e.g. 3.1.x) don't get translation
|
||||
updates. This is to keep the translation workflow simple.
|
||||
```
|
||||
sh ci/txpull.sh
|
||||
```
|
||||
* (Only releases from master)
|
||||
Update the list of enabled translation languages in `CMakeLists.txt`.
|
||||
Check the [translation site][transifex] for the list of languages with
|
||||
fairly complete translations.
|
||||
|
||||
#### (2) Tarball
|
||||
|
||||
* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without
|
||||
the helper script,
|
||||
```
|
||||
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) Tag
|
||||
|
||||
* Set RC to zero in `CMakeLists.txt` if this is the actual release.
|
||||
* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the
|
||||
tag is shown as a verified tag. Do not sign -rc tags.
|
||||
* Generate MD5 and SHA256 checksums.
|
||||
* Upload tarball.
|
||||
* Announce on mailing list, notify packagers.
|
||||
* Write release article.
|
||||
|
||||
#### (4) Release day
|
||||
|
||||
* 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.
|
150
ci/RELEASE.sh
150
ci/RELEASE.sh
@@ -1,150 +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
|
||||
#
|
||||
# You can influence the script a little with these options:
|
||||
# * `-B` do not build (before tagging)
|
||||
# * `-P` do not package (tag, sign, tarball)
|
||||
#
|
||||
# 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
|
||||
|
||||
while getopts "hBP" 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
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
### 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="128F00873E05AF1D"
|
||||
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 --tags
|
||||
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
|
19
ci/buildall.sh
Executable file
19
ci/buildall.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
rm -Rf "$WORKSPACE/prefix"
|
||||
mkdir "$WORKSPACE/prefix"
|
||||
|
||||
git clone git://anongit.kde.org/kpmcore "$WORKSPACE/kpmcore"
|
||||
cd "$WORKSPACE/kpmcore"
|
||||
mkdir "$WORKSPACE/kpmcore/build"
|
||||
cd "$WORKSPACE/kpmcore/build"
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
nice -n 18 make -j2
|
||||
make DESTDIR="$WORKSPACE/prefix" install
|
||||
|
||||
rm -Rf "$WORKSPACE/build"
|
||||
mkdir "$WORKSPACE/build"
|
||||
cd "$WORKSPACE/build"
|
||||
|
||||
CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
nice -n 18 make -j2
|
44
ci/calamares-coverity.sh
Executable file
44
ci/calamares-coverity.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Make sure we can make git operations from the Calamares Docker+Jenkins environment.
|
||||
cp ~/jenkins-master/.gitconfig ~
|
||||
cp -R ~/jenkins-master/.ssh ~
|
||||
|
||||
cd "$WORKSPACE"
|
||||
git config --global http.sslVerify false
|
||||
|
||||
rm -Rf "$WORKSPACE/prefix"
|
||||
mkdir "$WORKSPACE/prefix"
|
||||
|
||||
git clone git://anongit.kde.org/kpmcore "$WORKSPACE/kpmcore"
|
||||
cd "$WORKSPACE/kpmcore"
|
||||
mkdir "$WORKSPACE/kpmcore/build"
|
||||
cd "$WORKSPACE/kpmcore/build"
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
nice -n 18 make -j2
|
||||
make DESTDIR="$WORKSPACE/prefix" install
|
||||
|
||||
cd "$WORKSPACE"
|
||||
|
||||
wget https://scan.coverity.com/download/linux-64 --no-check-certificate \
|
||||
--post-data "token=ll90T04noQ4cORJx_zczKA&project=calamares%2Fcalamares" \
|
||||
-O coverity_tool.tgz
|
||||
mkdir "$WORKSPACE/coveritytool"
|
||||
tar xvf coverity_tool.tgz -C "$WORKSPACE/coveritytool" --strip-components 1
|
||||
export PATH="$WORKSPACE/coveritytool/bin:$PATH"
|
||||
|
||||
rm -Rf "$WORKSPACE/build"
|
||||
mkdir "$WORKSPACE/build"
|
||||
cd "$WORKSPACE/build"
|
||||
|
||||
CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
nice -n 18 cov-build --dir cov-int make -j2
|
||||
|
||||
tar caf calamares-ci.tar.xz cov-int
|
||||
|
||||
curl -k --form token=ll90T04noQ4cORJx_zczKA \
|
||||
--form email=teo@kde.org \
|
||||
--form file=@calamares-ci.tar.xz \
|
||||
--form version="master-`date -u +%Y%m%d`" \
|
||||
--form description="master on `date -u`" \
|
||||
https://scan.coverity.com/builds?project=calamares%2Fcalamares
|
@@ -1,48 +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.
|
||||
#
|
||||
set -e
|
||||
|
||||
AS=$( which astyle )
|
||||
|
||||
for _cf in clang-format-7 clang-format-8 clang-format70 clang-format80
|
||||
do
|
||||
# Not an error if this particular clang-format isn't found
|
||||
CF=$( which $_cf || true )
|
||||
test -n "$CF" && break
|
||||
done
|
||||
|
||||
test -n "$AS" || { echo "! No astyle found in PATH"; exit 1 ; }
|
||||
test -n "$CF" || { echo "! No clang-format-7 found in PATH"; exit 1 ; }
|
||||
test -x "$AS" || { echo "! $AS is not executable."; exit 1 ; }
|
||||
test -x "$CF" || { echo "! $CF is not executable."; exit 1 ; }
|
||||
|
||||
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,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.
|
||||
*/
|
30
ci/kpmcore-coverity.sh
Executable file
30
ci/kpmcore-coverity.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Hack for Coverity build, so the compiler doesn't complain about InheritanceChecker
|
||||
sudo cp ~/jenkins-master/kpluginfactory.h /usr/include/KF5/KCoreAddons
|
||||
|
||||
cd "$WORKSPACE"
|
||||
wget https://scan.coverity.com/download/linux-64 --no-check-certificate \
|
||||
--post-data "token=cyOjQZx5EOFLdhfo7ZDa4Q&project=KDE+Partition+Manager+Core+Library+-+KPMcore" \
|
||||
-O coverity_tool.tgz
|
||||
mkdir "$WORKSPACE/coveritytool"
|
||||
tar xvf coverity_tool.tgz -C "$WORKSPACE/coveritytool" --strip-components 1
|
||||
export PATH="$WORKSPACE/coveritytool/bin:$PATH"
|
||||
|
||||
rm -Rf "$WORKSPACE/build"
|
||||
mkdir "$WORKSPACE/build"
|
||||
cd "$WORKSPACE/build"
|
||||
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
nice -n 18 cov-build --dir cov-int make -j2
|
||||
|
||||
tar cavf kpmcore-ci.tar.xz cov-int
|
||||
|
||||
cat cov-int/build-log.txt
|
||||
|
||||
curl -k --form token=cyOjQZx5EOFLdhfo7ZDa4Q \
|
||||
--form email=teo@kde.org \
|
||||
--form file=@kpmcore-ci.tar.xz \
|
||||
--form version="master-`date -u +%Y%m%d`" \
|
||||
--form description="master on `date -u`" \
|
||||
https://scan.coverity.com/builds?project=KDE+Partition+Manager+Core+Library+-+KPMcore
|
@@ -1,13 +0,0 @@
|
||||
# Build configuration on Travis.
|
||||
#
|
||||
# Defines a CMAKE_ARGS variable for use with cmake
|
||||
#
|
||||
# This file is sourced by travis.sh, and exports the variables
|
||||
# to the environment.
|
||||
CMAKE_ARGS="\
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DWEBVIEW_FORCE_WEBKIT=1 \
|
||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
|
||||
-DWITH_PYTHONQT=OFF"
|
||||
|
||||
export CMAKE_ARGS
|
@@ -1,55 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Travis CI script for use on every-commit:
|
||||
# - build and install Calamares
|
||||
#
|
||||
test -n "$BUILDDIR" || { echo "! \$BUILDDIR not set" ; exit 1 ; }
|
||||
test -n "$SRCDIR" || { echo "! \$SRCDIR not set" ; exit 1 ; }
|
||||
|
||||
test -d $BUILDDIR || { echo "! $BUILDDIR not a directory" ; exit 1 ; }
|
||||
test -d $SRCDIR || { echo "! $SRCDIR not a directory" ; exit 1 ; }
|
||||
test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $SRCDIR/CMakeLists.txt" ; exit 1 ; }
|
||||
|
||||
cd $BUILDDIR || exit 1
|
||||
|
||||
section() {
|
||||
echo "###"
|
||||
echo "### $1"
|
||||
echo "###"
|
||||
pwd -P
|
||||
df -h
|
||||
}
|
||||
|
||||
section "cmake $CMAKE_ARGS $SRCDIR"
|
||||
cmake $CMAKE_ARGS $SRCDIR || { echo "! CMake failed" ; exit 1 ; }
|
||||
|
||||
section "make"
|
||||
make -j2 || { echo "! Make recheck" ; pwd -P ; df -h ; make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; }
|
||||
|
||||
section "make install"
|
||||
|
||||
install_debugging() {
|
||||
ls -la $( find "$1" -type f -name '*.so' )
|
||||
}
|
||||
|
||||
echo "# Build results"
|
||||
install_debugging "$BUILDDIR"
|
||||
|
||||
echo "# Install"
|
||||
DESTDIR=/build/INSTALL_ROOT
|
||||
mkdir -p "$DESTDIR"
|
||||
|
||||
if make install VERBOSE=1 DESTDIR="$DESTDIR" ;
|
||||
then
|
||||
echo "# .. install OK"
|
||||
result=true
|
||||
else
|
||||
echo "# .. install failed"
|
||||
result=false
|
||||
fi
|
||||
|
||||
|
||||
section "Install results"
|
||||
install_debugging "$DESTDIR"
|
||||
|
||||
$result || { echo "! Install failed" ; exit 1 ; } # Result of make install, above
|
@@ -1,34 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Travis CI script for weekly (cron) use:
|
||||
# - use the coverity tool to build and and upload results
|
||||
#
|
||||
test -n "$COVERITY_SCAN_TOKEN" || { echo "! Missing Coverity token" ; exit 1 ; }
|
||||
test -n "$BUILDDIR" || { echo "! \$BUILDDIR not set" ; exit 1 ; }
|
||||
test -n "$SRCDIR" || { echo "! \$SRCDIR not set" ; exit 1 ; }
|
||||
|
||||
test -d $BUILDDIR || { echo "! $BUILDDIR not a directory" ; exit 1 ; }
|
||||
test -d $SRCDIR || { echo "! $SRCDIR not a directory" ; exit 1 ; }
|
||||
test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $SRCDIR/CMakeLists.txt" ; exit 1 ; }
|
||||
|
||||
cd $BUILDDIR || exit 1
|
||||
|
||||
curl -k -o coverity_tool.tar.gz \
|
||||
-d "token=$COVERITY_SCAN_TOKEN&project=calamares%2Fcalamares" \
|
||||
https://scan.coverity.com/download/cxx/linux64 || exit 1
|
||||
mkdir "$BUILDDIR/coveritytool"
|
||||
tar xvf coverity_tool.tar.gz -C "$BUILDDIR/coveritytool" --strip-components 2
|
||||
export PATH="$BUILDDIR/coveritytool/bin:$PATH"
|
||||
|
||||
echo "# cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $SRCDIR"
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $SRCDIR || exit 1
|
||||
cov-build --dir cov-int make -j2
|
||||
|
||||
tar caf calamares-ci.tar.xz cov-int
|
||||
|
||||
curl -k --form token=$COVERITY_SCAN_TOKEN \
|
||||
--form email=groot@kde.org \
|
||||
--form file=@calamares-ci.tar.xz \
|
||||
--form version="master-`date -u +%Y%m%d`" \
|
||||
--form description="master on `date -u`" \
|
||||
https://scan.coverity.com/builds?project=calamares%2Fcalamares
|
21
ci/travis.sh
21
ci/travis.sh
@@ -1,21 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Travis build driver script:
|
||||
# - the regular CI runs, triggered by commits, run a script that builds
|
||||
# and installs calamares, and then runs the tests.
|
||||
# - the cronjob CI runs, triggered weekly, run a script that uses the
|
||||
# coverity tools to submit a build. This is slightly more resource-
|
||||
# intensive than the coverity add-on, but works on master.
|
||||
#
|
||||
D=`dirname "$0"`
|
||||
test -d "$D" || { echo "! No directory $D" ; exit 1 ; }
|
||||
test -x "$D/travis-continuous.sh" || { echo "! Missing -continuous" ; exit 1 ; }
|
||||
test -x "$D/travis-coverity.sh" || { echo "! Missing -coverity" ; exit 1 ; }
|
||||
|
||||
test -f "$D/travis-config.sh" && . "$D/travis-config.sh"
|
||||
|
||||
if test "$TRAVIS_EVENT_TYPE" = "cron" ; then
|
||||
exec "$D/travis-coverity.sh"
|
||||
else
|
||||
exec "$D/travis-continuous.sh"
|
||||
fi
|
113
ci/txpull.sh
113
ci/txpull.sh
@@ -1,110 +1,15 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
#!/bin/bash
|
||||
|
||||
### INITIAL SETUP
|
||||
#
|
||||
# This stuff needs to be done once; in a real CI environment where it
|
||||
# runs regularly in a container, the setup needs to be done when
|
||||
# creating the container.
|
||||
#
|
||||
#
|
||||
# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings
|
||||
# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings
|
||||
# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github
|
||||
#
|
||||
# cd "$WORKSPACE"
|
||||
# git config --global http.sslVerify false
|
||||
# Make sure we can make Transifex and git operations from the Calamares Docker+Jenkins environment.
|
||||
cp ~/jenkins-master/.transifexrc ~
|
||||
cp ~/jenkins-master/.gitconfig ~
|
||||
cp -R ~/jenkins-master/.ssh ~
|
||||
|
||||
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 ; }
|
||||
cd "$WORKSPACE"
|
||||
git config --global http.sslVerify false
|
||||
|
||||
### 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
|
||||
|
||||
### 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
|
||||
|
||||
# git push --set-upstream origin master
|
||||
git commit --author='Calamares CI <teo@kde.org>' --message='Automatic merge of Transifex translations' | true
|
||||
git push --set-upstream origin master
|
||||
|
91
ci/txpush.sh
91
ci/txpush.sh
@@ -1,86 +1,13 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Extract translations from Calamares source and send them
|
||||
# to Transifex.
|
||||
#
|
||||
# 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.
|
||||
#!/bin/bash
|
||||
|
||||
### INITIAL SETUP
|
||||
#
|
||||
# This stuff needs to be done once; in a real CI environment where it
|
||||
# runs regularly in a container, the setup needs to be done when
|
||||
# creating the container.
|
||||
#
|
||||
#
|
||||
# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings
|
||||
# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings
|
||||
# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github
|
||||
#
|
||||
# cd "$WORKSPACE"
|
||||
# git config --global http.sslVerify false
|
||||
# Make sure we can make Transifex and git operations from the Calamares Docker+Jenkins environment.
|
||||
cp ~/jenkins-master/.transifexrc ~
|
||||
cp ~/jenkins-master/.gitconfig ~
|
||||
cp -R ~/jenkins-master/.ssh ~
|
||||
|
||||
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() {
|
||||
echo "Skipped tx $*"
|
||||
}
|
||||
fi
|
||||
|
||||
### CREATE TRANSLATIONS
|
||||
#
|
||||
# Use local tools (depending on type of source) to create translation
|
||||
# sources, then push to Transifex
|
||||
cd "$WORKSPACE"
|
||||
git config --global http.sslVerify false
|
||||
|
||||
export QT_SELECT=5
|
||||
# Don't pull branding translations in,
|
||||
# those are done separately.
|
||||
_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml"
|
||||
lupdate $_srcdirs -ts -no-obsolete lang/calamares_en.ts
|
||||
|
||||
tx push --source --no-interactive -r calamares.calamares-master
|
||||
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
|
||||
lupdate src/ -ts -no-obsolete lang/calamares_en.ts
|
||||
tx push --force --source --no-interactive
|
||||
|
@@ -1,96 +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.
|
||||
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):
|
||||
"""
|
||||
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.
|
||||
"""
|
||||
import requests
|
||||
|
||||
r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares-master/", auth=("api", token))
|
||||
if r.status_code != 200:
|
||||
return 1
|
||||
|
||||
suppressed_languages = ( "es_ES", ) # In Transifex, but not used
|
||||
# Some languages go into the "incomplete" list by definition,
|
||||
# regardless of their completion status: this can have various reasons.
|
||||
incomplete_languages = (
|
||||
"eo", # Not supported by QLocale
|
||||
)
|
||||
|
||||
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"]
|
||||
if lang_name in incomplete_languages:
|
||||
stats = 0.0
|
||||
all_langs.append((stats, lang_name))
|
||||
|
||||
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():
|
||||
cred = get_tx_credentials()
|
||||
if cred:
|
||||
return get_tx_stats(cred)
|
||||
else:
|
||||
print("! Could not find API token in ~/.transifexrc")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
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,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,18 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-NegativeText {
|
||||
color:#da4453;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
class="ColorScheme-NegativeText"
|
||||
d="M 1 0 C 0.4459807 0 0 0.446 0 1 L 0 7 C 0 7.5541 0.4459807 8 1 8 L 7 8 C 7.554019 8 8 7.5541 8 7 L 8 1 C 8 0.446 7.554019 0 7 0 L 1 0 z "
|
||||
/>
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="M 2 1 L 1 2 L 3 4 L 1 6 L 2 7 L 4 5 L 6 7 L 7 6 L 5 4 L 7 2 L 6 1 L 4 3 L 2 1 z "
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 661 B |
@@ -1,18 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-PositiveText {
|
||||
color:#27ae60;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
class="ColorScheme-PositiveText"
|
||||
d="M 4 0 C 1.784 0 0 1.784 0 4 C 0 6.216 1.784 8 4 8 C 6.216 8 8 6.216 8 4 C 8 1.784 6.216 0 4 0 z "
|
||||
/>
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="M 6 2 L 3 5 L 2 4 L 1 5 L 2 6 L 3 7 L 7 3 L 6 2 z "
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 591 B |
@@ -1,18 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
|
||||
<defs id="defs3051">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-NeutralText {
|
||||
color:#f67400;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path
|
||||
style="fill:currentColor;fill-opacity:1;stroke:none"
|
||||
class="ColorScheme-NeutralText"
|
||||
d="M 4 0 C 3.7964835 0.00025315917 3.644678 0.09649124 3.5371094 0.3125 C 3.5371094 0.3125 0.077246535 7.200596 0.080078125 7.2285156 C 0.043417505 7.3055016 -1.2456632e-05 7.403681 0 7.5 C 0 7.7761424 0.22385763 8 0.5 8 L 7.5 8 C 7.7761424 8 8 7.7761424 8 7.5 C 8.0002021 7.3873383 7.9818808 7.3677538 7.8925781 7.1894531 L 4.4550781 0.29101562 C 4.346001 0.097741395 4.1955491 -0.00033128801 4 0 z "
|
||||
/>
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="M 3.5 2 L 3.5 5 L 4.5 5 L 4.5 2 L 3.5 2 z M 3.5 6 L 3.5 7 L 4.5 7 L 4.5 6 L 3.5 6 z "
|
||||
/>
|
||||
</svg>
|
Before Width: | Height: | Size: 924 B |
36
hacking/GlobalStorage.md
Normal file
36
hacking/GlobalStorage.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# GlobalStorage keys
|
||||
|
||||
The GlobalStorage structure contains information which is shared among jobs.
|
||||
Jobs are free to define their own keys, but some keys have been standardized.
|
||||
Here they are:
|
||||
|
||||
## bootLoader
|
||||
|
||||
A dictionary with the following keys:
|
||||
|
||||
- `installPath`: device where the boot loader should be installed ("/dev/sda", "/dev/sdb1"...)
|
||||
|
||||
## branding
|
||||
|
||||
A dictionary with the following keys (loaded from branding.desc):
|
||||
|
||||
- `productName`: distribution unversioned product name (long version)
|
||||
- `shortProductName`: distribution unversioned product name (short version)
|
||||
- `version`: distribution version number (long version)
|
||||
- `shortVersion`: distribution version number (short version)
|
||||
- `versionedName`: distribution product name and version (long version)
|
||||
- `shortVersionedName`: distribution product name and version (short version)
|
||||
|
||||
## partitions
|
||||
|
||||
A list of dictionaries, one per partition. The dictionary contains the following keys:
|
||||
|
||||
- `device`: path to the partition device
|
||||
- `fs`: the name of the file system
|
||||
- `mountPoint`: where the device should be mounted
|
||||
- `uuid`: the UUID of the partition device
|
||||
|
||||
## rootMountPoint
|
||||
|
||||
A string which contains the path where the root file system has been mounted.
|
||||
This key is set by the `mount` job.
|
35
hacking/RELEASE.md
Normal file
35
hacking/RELEASE.md
Normal file
@@ -0,0 +1,35 @@
|
||||
The Calamares release process
|
||||
=============================
|
||||
|
||||
#### (0) A week in advance
|
||||
* Run Coverity scan, fix what's relevant.
|
||||
* Build with clang -Weverything, fix what's relevant.
|
||||
* Make sure all tests pass.
|
||||
* Notify translators.
|
||||
|
||||
#### (1) Preparation
|
||||
* Check `README.md` and everything in `hacking`, make sure it's all still relevant.
|
||||
* Update submodules.
|
||||
* Check defaults in `settings.conf` and other configuration files.
|
||||
* Pull latest translations from Transifex.
|
||||
* Update the list of enabled translation languages in `CMakeLists.txt`.
|
||||
* Bump version in `CMakeLists.txt`, commit.
|
||||
|
||||
#### (2) Tarball
|
||||
* Create tarball: `../git-archive-all/git-archive-all -v calamares-1.1-rc1.tar.gz`
|
||||
* Test tarball.
|
||||
|
||||
#### (3) Tag
|
||||
* `git tag -s v1.1.0`
|
||||
* Generate MD5 and SHA1 checksums.
|
||||
* Upload tarball.
|
||||
* Announce on mailing list, notify packagers.
|
||||
* Write release article.
|
||||
|
||||
#### (4) Release day
|
||||
* Publish tarball.
|
||||
* Update download page.
|
||||
* Publish release article on `calamares.io`.
|
||||
* Publicize on social networks.
|
||||
* Update release date on JIRA.
|
||||
* Publish blog post.
|
@@ -5,7 +5,7 @@ indent=spaces=4
|
||||
|
||||
# Brackets
|
||||
style=break
|
||||
add-brackets
|
||||
remove-brackets # Remove brackets on single-line `if` and `for` (requires astyle 2.04)
|
||||
|
||||
# Spaces
|
||||
pad-paren-in
|
6
hacking/calamaresstyle
Executable file
6
hacking/calamaresstyle
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
# Calls astyle with settings matching Calamares coding style
|
||||
# Requires astyle >= 2.04
|
||||
set -e
|
||||
|
||||
astyle --options=$(dirname $0)/astylerc "$@"
|
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<component type="desktop">
|
||||
<id>io.calamares.calamares.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0+</project_license>
|
||||
<name>Calamares</name>
|
||||
<name xml:lang="da">Calamares</name>
|
||||
<name xml:lang="en-GB">Calamares</name>
|
||||
<name xml:lang="nl">Calamares</name>
|
||||
<summary>Calamares Linux Installer</summary>
|
||||
<summary xml:lang="en-GB">Calamares Linux Installer</summary>
|
||||
<summary xml:lang="nl">Linux Installatieprogramma Calamares</summary>
|
||||
<description>
|
||||
<p>Calamares is an installer program for Linux distributions.</p>
|
||||
<p xml:lang="nl">Calamares is een installatieprogramma voor Linux distributies.</p>
|
||||
</description>
|
||||
<url type="homepage">https://calamares.io</url>
|
||||
<url type="bugtracker">https://https://github.com/calamares/calamares/issues/</url>
|
||||
<url type="help">https://github.com/calamares/calamares/wiki</url>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<caption>Calamares Welcome</caption>
|
||||
<image>https://calamares.io/images/cal_640.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<provides>
|
||||
<binary>calamares</binary>
|
||||
</provides>
|
||||
</component>
|
3015
lang/calamares_ar.ts
3015
lang/calamares_ar.ts
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
3320
lang/calamares_be.ts
3320
lang/calamares_be.ts
File diff suppressed because it is too large
Load Diff
2573
lang/calamares_bg.ts
2573
lang/calamares_bg.ts
File diff suppressed because it is too large
Load Diff
2738
lang/calamares_ca.ts
2738
lang/calamares_ca.ts
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user