Merge branch 'master' of https://github.com/calamares/calamares into development
This commit is contained in:
commit
25db582a0a
@ -1,34 +1,32 @@
|
|||||||
---
|
---
|
||||||
BasedOnStyle: WebKit
|
BasedOnStyle: WebKit
|
||||||
|
|
||||||
AlignAfterOpenBracket: Align
|
AlignAfterOpenBracket: Align
|
||||||
AlignEscapedNewlines: Left
|
AlignEscapedNewlines: DontAlign
|
||||||
AllowAllParametersOfDeclarationOnNextLine: 'false'
|
AllowAllParametersOfDeclarationOnNextLine: "false"
|
||||||
AllowShortFunctionsOnASingleLine: Inline
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
AllowShortIfStatementsOnASingleLine: 'false'
|
AllowShortIfStatementsOnASingleLine: "false"
|
||||||
AllowShortLoopsOnASingleLine: 'false'
|
AllowShortLoopsOnASingleLine: "false"
|
||||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||||
AlwaysBreakTemplateDeclarations: Yes
|
AlwaysBreakTemplateDeclarations: Yes
|
||||||
BinPackArguments: 'false'
|
BinPackArguments: "false"
|
||||||
BinPackParameters: 'false'
|
BinPackParameters: "false"
|
||||||
BreakBeforeBraces: Allman
|
BreakBeforeBraces: Allman
|
||||||
BreakBeforeTernaryOperators: 'true'
|
BreakBeforeTernaryOperators: "true"
|
||||||
BreakConstructorInitializers: BeforeComma
|
BreakConstructorInitializers: BeforeComma
|
||||||
ColumnLimit: 120
|
ColumnLimit: 120
|
||||||
Cpp11BracedListStyle: 'false'
|
Cpp11BracedListStyle: "false"
|
||||||
FixNamespaceComments: 'true'
|
FixNamespaceComments: "true"
|
||||||
IncludeBlocks: Preserve
|
IncludeBlocks: Preserve
|
||||||
IndentWidth: '4'
|
IndentWidth: "4"
|
||||||
MaxEmptyLinesToKeep: '2'
|
MaxEmptyLinesToKeep: "2"
|
||||||
NamespaceIndentation: None
|
NamespaceIndentation: None
|
||||||
PointerAlignment: Left
|
PointerAlignment: Left
|
||||||
ReflowComments: 'false'
|
ReflowComments: "false"
|
||||||
SortIncludes: 'true'
|
SortIncludes: "true"
|
||||||
SpaceAfterCStyleCast: 'false'
|
SpaceAfterCStyleCast: "false"
|
||||||
SpacesBeforeTrailingComments: '2'
|
SpacesBeforeTrailingComments: "2"
|
||||||
SpacesInAngles: 'true'
|
SpacesInAngles: "true"
|
||||||
SpacesInParentheses: 'true'
|
SpacesInParentheses: "true"
|
||||||
SpacesInSquareBrackets: 'true'
|
SpacesInSquareBrackets: "true"
|
||||||
Standard: Cpp11
|
Standard: Cpp11
|
||||||
|
|
||||||
...
|
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#include "kdlockedsharedmemorypointer.h"
|
#include "kdlockedsharedmemorypointer.h"
|
||||||
|
|
||||||
#if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN )
|
#if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN )
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#ifndef __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__
|
#ifndef __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__
|
||||||
#define __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__
|
#define __KDTOOLS__CORE__KDLOCKEDSHAREDMEMORYPOINTER_H__
|
||||||
|
|
||||||
@ -74,7 +80,7 @@ public:
|
|||||||
typedef const T* const_iterator;
|
typedef const T* const_iterator;
|
||||||
typedef std::reverse_iterator< const_iterator > const_reverse_iterator;
|
typedef std::reverse_iterator< const_iterator > const_reverse_iterator;
|
||||||
typedef std::reverse_iterator< iterator > reverse_iterator;
|
typedef std::reverse_iterator< iterator > reverse_iterator;
|
||||||
|
|
||||||
iterator begin() { return get(); }
|
iterator begin() { return get(); }
|
||||||
const_iterator begin() const { return get(); }
|
const_iterator begin() const { return get(); }
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#include "kdsharedmemorylocker.h"
|
#include "kdsharedmemorylocker.h"
|
||||||
|
|
||||||
#if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN )
|
#if QT_VERSION >= 0x040400 || defined( DOXYGEN_RUN )
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#ifndef __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H
|
#ifndef __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H
|
||||||
#define __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H
|
#define __KDTOOLS__CORE__KDSHAREDMEMORYLOCKER_H
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#include "kdsingleapplicationguard.h"
|
#include "kdsingleapplicationguard.h"
|
||||||
|
|
||||||
#if QT_VERSION >= 0x040400 || defined(DOXYGEN_RUN)
|
#if QT_VERSION >= 0x040400 || defined(DOXYGEN_RUN)
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#ifndef KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H
|
#ifndef KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H
|
||||||
#define KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H
|
#define KDTOOLSCORE_KDSINGLEAPPLICATIONGUARD_H
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#include "kdtoolsglobal.h"
|
#include "kdtoolsglobal.h"
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#ifndef KDTOOLS_KDTOOLSGLOBAL_H
|
#ifndef KDTOOLS_KDTOOLSGLOBAL_H
|
||||||
#define KDTOOLS_KDTOOLSGLOBAL_H
|
#define KDTOOLS_KDTOOLSGLOBAL_H
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#include "pimpl_ptr.h"
|
#include "pimpl_ptr.h"
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -9,7 +15,7 @@
|
|||||||
(The exception safety of this class has not been evaluated yet.)
|
(The exception safety of this class has not been evaluated yet.)
|
||||||
|
|
||||||
pimpl_ptr is a smart immutable pointer, which owns the contained object. Unlike other smart pointers,
|
pimpl_ptr is a smart immutable pointer, which owns the contained object. Unlike other smart pointers,
|
||||||
it creates a standard constructed object when instanciated via the
|
it creates a standard constructed object when instanciated via the
|
||||||
\link pimpl_ptr() standard constructor\endlink.
|
\link pimpl_ptr() standard constructor\endlink.
|
||||||
Additionally, pimpl_ptr respects constness of the pointer object and returns \c const \c T* for
|
Additionally, pimpl_ptr respects constness of the pointer object and returns \c const \c T* for
|
||||||
a const pimpl_ptr object.
|
a const pimpl_ptr object.
|
||||||
@ -126,7 +132,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn T * pimpl_ptr::operator->()
|
\fn T * pimpl_ptr::operator->()
|
||||||
|
|
||||||
Member-by-pointer operator. Returns get().
|
Member-by-pointer operator. Returns get().
|
||||||
*/
|
*/
|
||||||
@ -163,7 +169,7 @@ KDAB_UNITTEST_SIMPLE( pimpl_ptr, "kdcoretools" ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
QPointer< QObject > o;
|
QPointer< QObject > o;
|
||||||
{
|
{
|
||||||
kdtools::pimpl_ptr< QObject > qobject( new QObject );
|
kdtools::pimpl_ptr< QObject > qobject( new QObject );
|
||||||
@ -174,7 +180,7 @@ KDAB_UNITTEST_SIMPLE( pimpl_ptr, "kdcoretools" ) {
|
|||||||
assertNull( o );
|
assertNull( o );
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const kdtools::pimpl_ptr< QObject > qobject( new QObject );
|
const kdtools::pimpl_ptr< QObject > qobject( new QObject );
|
||||||
const QObject* o = qobject.get();
|
const QObject* o = qobject.get();
|
||||||
assertEqual( o, qobject.operator->() );
|
assertEqual( o, qobject.operator->() );
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: LGPL-2.0-only
|
||||||
|
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||||
|
*
|
||||||
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||||
|
*/
|
||||||
#ifndef KDTOOLSCORE_PIMPL_PTR_H
|
#ifndef KDTOOLSCORE_PIMPL_PTR_H
|
||||||
#define KDTOOLSCORE_PIMPL_PTR_H
|
#define KDTOOLSCORE_PIMPL_PTR_H
|
||||||
|
|
@ -1,5 +1,4 @@
|
|||||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
/*
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-3.0+
|
* SPDX-License-Identifier: GPL-3.0+
|
||||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||||
*/
|
*/
|
@ -1,5 +1,4 @@
|
|||||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
/*
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-3.0+
|
* SPDX-License-Identifier: GPL-3.0+
|
||||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||||
*/
|
*/
|
@ -1,5 +1,4 @@
|
|||||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
/*
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-3.0+
|
* SPDX-License-Identifier: GPL-3.0+
|
||||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||||
*/
|
*/
|
@ -1,5 +1,4 @@
|
|||||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
/*
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-3.0+
|
* SPDX-License-Identifier: GPL-3.0+
|
||||||
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
* License-Filename: LICENSES/GPLv3+-QJsonModel
|
||||||
*/
|
*/
|
@ -1,5 +1,4 @@
|
|||||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
/*
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
||||||
*/
|
*/
|
@ -1,5 +1,4 @@
|
|||||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
/*
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
||||||
*/
|
*/
|
16
CHANGES
16
CHANGES
@ -3,7 +3,21 @@ 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
|
changelog -- this log starts with version 3.2.0. The release notes on the
|
||||||
website will have to do for older versions.
|
website will have to do for older versions.
|
||||||
|
|
||||||
# 3.2.12 (unreleased) #
|
# 3.2.13 (unreleased) #
|
||||||
|
|
||||||
|
This release contains contributions from (alphabetically by first name):
|
||||||
|
|
||||||
|
## 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).
|
||||||
|
|
||||||
|
## Modules ##
|
||||||
|
|
||||||
|
|
||||||
|
# 3.2.12 (2019-08-07) #
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
This release contains contributions from (alphabetically by first name):
|
||||||
- apt-ghetto
|
- apt-ghetto
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
||||||
project( CALAMARES
|
project( CALAMARES
|
||||||
VERSION 3.2.12
|
VERSION 3.2.13
|
||||||
LANGUAGES C CXX )
|
LANGUAGES C CXX )
|
||||||
|
|
||||||
set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development
|
set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during development
|
||||||
|
488
LICENSES/LGPLv2-KDAB
Normal file
488
LICENSES/LGPLv2-KDAB
Normal file
@ -0,0 +1,488 @@
|
|||||||
|
|
||||||
|
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!
|
0
ci/AppImage.sh
Normal file → Executable file
0
ci/AppImage.sh
Normal file → Executable file
4
ci/RELEASE.sh
Normal file → Executable file
4
ci/RELEASE.sh
Normal file → Executable file
@ -54,7 +54,7 @@ if test "x$BUILD_CLANG" = "xtrue" ; then
|
|||||||
rm -rf "$BUILDDIR"
|
rm -rf "$BUILDDIR"
|
||||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
||||||
( cd "$BUILDDIR" && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; 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." ; exit 1 ; }
|
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR (clang)." ; exit 1 ; }
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ TMPDIR=$(mktemp -d --suffix="-calamares-$D")
|
|||||||
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
||||||
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
||||||
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
||||||
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed." ; exit 1 ; }
|
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR." ; exit 1 ; }
|
||||||
|
|
||||||
### Cleanup
|
### Cleanup
|
||||||
#
|
#
|
||||||
|
2
ci/txstats.py
Normal file → Executable file
2
ci/txstats.py
Normal file → Executable file
@ -1,4 +1,4 @@
|
|||||||
#! /usr/bin/env python
|
#! /usr/bin/env python3
|
||||||
#
|
#
|
||||||
# Uses the Transifex API to get a list of enabled languages,
|
# Uses the Transifex API to get a list of enabled languages,
|
||||||
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
||||||
|
@ -17,8 +17,9 @@ include_directories(
|
|||||||
${CMAKE_CURRENT_BINARY_DIR}
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/../libcalamares
|
${CMAKE_CURRENT_BINARY_DIR}/../libcalamares
|
||||||
|
|
||||||
../libcalamares
|
${CMAKE_SOURCE_DIR}/src/libcalamares
|
||||||
../libcalamaresui
|
${CMAKE_SOURCE_DIR}/src//libcalamaresui
|
||||||
|
${CMAKE_SOURCE_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
|
@ -21,10 +21,11 @@
|
|||||||
#include "CalamaresApplication.h"
|
#include "CalamaresApplication.h"
|
||||||
|
|
||||||
#include "CalamaresConfig.h"
|
#include "CalamaresConfig.h"
|
||||||
#include "kdsingleapplicationguard/kdsingleapplicationguard.h"
|
|
||||||
#include "utils/Dirs.h"
|
#include "utils/Dirs.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
|
#include "3rdparty/kdsingleapplicationguard/kdsingleapplicationguard.h"
|
||||||
|
|
||||||
#ifdef WITH_KF5Crash
|
#ifdef WITH_KF5Crash
|
||||||
#include <KF5/KCoreAddons/KAboutData>
|
#include <KF5/KCoreAddons/KAboutData>
|
||||||
#include <KF5/KCrash/KCrash>
|
#include <KF5/KCrash/KCrash>
|
||||||
|
@ -51,12 +51,16 @@ set( libSources
|
|||||||
utils/Variant.cpp
|
utils/Variant.cpp
|
||||||
utils/Yaml.cpp
|
utils/Yaml.cpp
|
||||||
)
|
)
|
||||||
set( kdsagSources
|
set( _kdsagSources
|
||||||
kdsingleapplicationguard/kdsingleapplicationguard.cpp
|
kdsingleapplicationguard/kdsingleapplicationguard.cpp
|
||||||
kdsingleapplicationguard/kdsharedmemorylocker.cpp
|
kdsingleapplicationguard/kdsharedmemorylocker.cpp
|
||||||
kdsingleapplicationguard/kdtoolsglobal.cpp
|
kdsingleapplicationguard/kdtoolsglobal.cpp
|
||||||
kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp
|
kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp
|
||||||
)
|
)
|
||||||
|
set( kdsagSources "" )
|
||||||
|
foreach( _s ${_kdsagSources} )
|
||||||
|
list( APPEND kdsagSources ${CMAKE_SOURCE_DIR}/3rdparty/${_s} )
|
||||||
|
endforeach()
|
||||||
mark_thirdparty_code( ${kdsagSources} )
|
mark_thirdparty_code( ${kdsagSources} )
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
|
@ -12,4 +12,4 @@
|
|||||||
#cmakedefine WITH_PYTHON
|
#cmakedefine WITH_PYTHON
|
||||||
#cmakedefine WITH_PYTHONQT
|
#cmakedefine WITH_PYTHONQT
|
||||||
|
|
||||||
#endif // CALAMARESCONFIG_H
|
#endif // CALAMARESCONFIG_H
|
||||||
|
@ -30,7 +30,7 @@ namespace CalamaresUtils
|
|||||||
namespace GeoIP
|
namespace GeoIP
|
||||||
{
|
{
|
||||||
|
|
||||||
GeoIPJSON::GeoIPJSON(const QString& attribute)
|
GeoIPJSON::GeoIPJSON( const QString& attribute )
|
||||||
: Interface( attribute.isEmpty() ? QStringLiteral( "time_zone" ) : attribute )
|
: Interface( attribute.isEmpty() ? QStringLiteral( "time_zone" ) : attribute )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -42,19 +42,25 @@ GeoIPJSON::GeoIPJSON(const QString& attribute)
|
|||||||
* "foo" of @p m, like a regular JSON lookup would.
|
* "foo" of @p m, like a regular JSON lookup would.
|
||||||
*/
|
*/
|
||||||
static QString
|
static QString
|
||||||
selectMap( const QVariantMap& m, const QStringList& l, int index)
|
selectMap( const QVariantMap& m, const QStringList& l, int index )
|
||||||
{
|
{
|
||||||
if ( index >= l.count() )
|
if ( index >= l.count() )
|
||||||
|
{
|
||||||
return QString();
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
QString attributeName = l[index];
|
QString attributeName = l[ index ];
|
||||||
if ( index == l.count() - 1 )
|
if ( index == l.count() - 1 )
|
||||||
|
{
|
||||||
return CalamaresUtils::getString( m, attributeName );
|
return CalamaresUtils::getString( m, attributeName );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool success = false; // bogus
|
bool success = false; // bogus
|
||||||
if ( m.contains( attributeName ) )
|
if ( m.contains( attributeName ) )
|
||||||
return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index+1 );
|
{
|
||||||
|
return selectMap( CalamaresUtils::getSubMap( m, attributeName, success ), l, index + 1 );
|
||||||
|
}
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -67,18 +73,18 @@ GeoIPJSON::rawReply( const QByteArray& data )
|
|||||||
YAML::Node doc = YAML::Load( data );
|
YAML::Node doc = YAML::Load( data );
|
||||||
|
|
||||||
QVariant var = CalamaresUtils::yamlToVariant( doc );
|
QVariant var = CalamaresUtils::yamlToVariant( doc );
|
||||||
if ( !var.isNull() &&
|
if ( !var.isNull() && var.isValid() && var.type() == QVariant::Map )
|
||||||
var.isValid() &&
|
|
||||||
var.type() == QVariant::Map )
|
|
||||||
{
|
{
|
||||||
return selectMap( var.toMap(), m_element.split('.'), 0 );
|
return selectMap( var.toMap(), m_element.split( '.' ), 0 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
cWarning() << "Invalid YAML data for GeoIPJSON";
|
cWarning() << "Invalid YAML data for GeoIPJSON";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch ( YAML::Exception& e )
|
catch ( YAML::Exception& e )
|
||||||
{
|
{
|
||||||
CalamaresUtils::explainYamlException( e, data, "GeoIP data");
|
CalamaresUtils::explainYamlException( e, data, "GeoIP data" );
|
||||||
}
|
}
|
||||||
|
|
||||||
return QString();
|
return QString();
|
||||||
@ -90,5 +96,5 @@ GeoIPJSON::processReply( const QByteArray& data )
|
|||||||
return splitTZString( rawReply( data ) );
|
return splitTZString( rawReply( data ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
|
@ -45,9 +45,9 @@ public:
|
|||||||
explicit GeoIPJSON( const QString& attribute = QString() );
|
explicit GeoIPJSON( const QString& attribute = QString() );
|
||||||
|
|
||||||
virtual RegionZonePair processReply( const QByteArray& ) override;
|
virtual RegionZonePair processReply( const QByteArray& ) override;
|
||||||
virtual QString rawReply(const QByteArray & ) override;
|
virtual QString rawReply( const QByteArray& ) override;
|
||||||
} ;
|
};
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,21 +34,16 @@ QTEST_GUILESS_MAIN( GeoIPTests )
|
|||||||
|
|
||||||
using namespace CalamaresUtils::GeoIP;
|
using namespace CalamaresUtils::GeoIP;
|
||||||
|
|
||||||
GeoIPTests::GeoIPTests()
|
GeoIPTests::GeoIPTests() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
GeoIPTests::~GeoIPTests()
|
GeoIPTests::~GeoIPTests() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GeoIPTests::initTestCase()
|
GeoIPTests::initTestCase()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char json_data_attribute[] =
|
static const char json_data_attribute[] = "{\"time_zone\":\"Europe/Amsterdam\"}";
|
||||||
"{\"time_zone\":\"Europe/Amsterdam\"}";
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GeoIPTests::testJSON()
|
GeoIPTests::testJSON()
|
||||||
@ -67,7 +62,8 @@ GeoIPTests::testJSON()
|
|||||||
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeoIPTests::testJSONalt()
|
void
|
||||||
|
GeoIPTests::testJSONalt()
|
||||||
{
|
{
|
||||||
GeoIPJSON handler( "zona_de_hora" );
|
GeoIPJSON handler( "zona_de_hora" );
|
||||||
|
|
||||||
@ -102,7 +98,7 @@ GeoIPTests::testJSONbad()
|
|||||||
|
|
||||||
|
|
||||||
static const char xml_data_ubiquity[] =
|
static const char xml_data_ubiquity[] =
|
||||||
R"(<Response>
|
R"(<Response>
|
||||||
<Ip>85.150.1.1</Ip>
|
<Ip>85.150.1.1</Ip>
|
||||||
<Status>OK</Status>
|
<Status>OK</Status>
|
||||||
<CountryCode>NL</CountryCode>
|
<CountryCode>NL</CountryCode>
|
||||||
@ -133,8 +129,8 @@ GeoIPTests::testXML()
|
|||||||
void
|
void
|
||||||
GeoIPTests::testXML2()
|
GeoIPTests::testXML2()
|
||||||
{
|
{
|
||||||
static const char data[] =
|
static const char data[]
|
||||||
"<Response><TimeZone>America/North Dakota/Beulah</TimeZone></Response>"; // With a space!
|
= "<Response><TimeZone>America/North Dakota/Beulah</TimeZone></Response>"; // With a space!
|
||||||
|
|
||||||
#ifdef QT_XML_LIB
|
#ifdef QT_XML_LIB
|
||||||
GeoIPXML handler;
|
GeoIPXML handler;
|
||||||
@ -146,7 +142,8 @@ GeoIPTests::testXML2()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GeoIPTests::testXMLalt()
|
void
|
||||||
|
GeoIPTests::testXMLalt()
|
||||||
{
|
{
|
||||||
#ifdef QT_XML_LIB
|
#ifdef QT_XML_LIB
|
||||||
GeoIPXML handler( "ZT" );
|
GeoIPXML handler( "ZT" );
|
||||||
@ -173,29 +170,30 @@ GeoIPTests::testXMLbad()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeoIPTests::testSplitTZ()
|
void
|
||||||
|
GeoIPTests::testSplitTZ()
|
||||||
{
|
{
|
||||||
using namespace CalamaresUtils::GeoIP;
|
using namespace CalamaresUtils::GeoIP;
|
||||||
auto tz = splitTZString( QStringLiteral("Moon/Dark_side") );
|
auto tz = splitTZString( QStringLiteral( "Moon/Dark_side" ) );
|
||||||
QCOMPARE( tz.first, QStringLiteral("Moon") );
|
QCOMPARE( tz.first, QStringLiteral( "Moon" ) );
|
||||||
QCOMPARE( tz.second, QStringLiteral("Dark_side") );
|
QCOMPARE( tz.second, QStringLiteral( "Dark_side" ) );
|
||||||
|
|
||||||
// Some providers return weirdly escaped data
|
// Some providers return weirdly escaped data
|
||||||
tz = splitTZString( QStringLiteral("America\\/NewYork") );
|
tz = splitTZString( QStringLiteral( "America\\/NewYork" ) );
|
||||||
QCOMPARE( tz.first, QStringLiteral("America") );
|
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
||||||
QCOMPARE( tz.second, QStringLiteral("NewYork") ); // That's not actually the zone name
|
QCOMPARE( tz.second, QStringLiteral( "NewYork" ) ); // That's not actually the zone name
|
||||||
|
|
||||||
// Check that bogus data fails
|
// Check that bogus data fails
|
||||||
tz = splitTZString( QString() );
|
tz = splitTZString( QString() );
|
||||||
QCOMPARE( tz.first, QString() );
|
QCOMPARE( tz.first, QString() );
|
||||||
|
|
||||||
tz = splitTZString( QStringLiteral("America.NewYork") );
|
tz = splitTZString( QStringLiteral( "America.NewYork" ) );
|
||||||
QCOMPARE( tz.first, QString() );
|
QCOMPARE( tz.first, QString() );
|
||||||
|
|
||||||
// Check that three-level is split properly and space is replaced
|
// Check that three-level is split properly and space is replaced
|
||||||
tz = splitTZString( QStringLiteral("America/North Dakota/Beulah") );
|
tz = splitTZString( QStringLiteral( "America/North Dakota/Beulah" ) );
|
||||||
QCOMPARE( tz.first, QStringLiteral("America") );
|
QCOMPARE( tz.first, QStringLiteral( "America" ) );
|
||||||
QCOMPARE( tz.second, QStringLiteral("North_Dakota/Beulah") );
|
QCOMPARE( tz.second, QStringLiteral( "North_Dakota/Beulah" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -217,19 +215,20 @@ synchronous_get( const char* urlstring )
|
|||||||
return reply->readAll();
|
return reply->readAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHECK_GET(t, selector, url) \
|
#define CHECK_GET( t, selector, url ) \
|
||||||
{ \
|
{ \
|
||||||
auto tz = GeoIP##t( selector ).processReply( synchronous_get( url ) ); \
|
auto tz = GeoIP##t( selector ).processReply( synchronous_get( url ) ); \
|
||||||
qDebug() << tz; \
|
qDebug() << tz; \
|
||||||
QCOMPARE( default_tz, tz ); \
|
QCOMPARE( default_tz, tz ); \
|
||||||
auto tz2 = CalamaresUtils::GeoIP::Handler( ""#t, url, selector ).get(); \
|
auto tz2 = CalamaresUtils::GeoIP::Handler( "" #t, url, selector ).get(); \
|
||||||
qDebug() << tz2; \
|
qDebug() << tz2; \
|
||||||
QCOMPARE( default_tz, tz2 ); \
|
QCOMPARE( default_tz, tz2 ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeoIPTests::testGet()
|
void
|
||||||
|
GeoIPTests::testGet()
|
||||||
{
|
{
|
||||||
if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral("TEST_HTTP_GET") ) )
|
if ( !QProcessEnvironment::systemEnvironment().contains( QStringLiteral( "TEST_HTTP_GET" ) ) )
|
||||||
{
|
{
|
||||||
qDebug() << "Skipping HTTP GET tests, set TEST_HTTP_GET environment variable to enable";
|
qDebug() << "Skipping HTTP GET tests, set TEST_HTTP_GET environment variable to enable";
|
||||||
return;
|
return;
|
||||||
@ -248,14 +247,14 @@ void GeoIPTests::testGet()
|
|||||||
// Each expansion of CHECK_GET does a synchronous GET, then checks that
|
// Each expansion of CHECK_GET does a synchronous GET, then checks that
|
||||||
// the TZ data is the same as the default_tz; this is fragile if the
|
// the TZ data is the same as the default_tz; this is fragile if the
|
||||||
// services don't agree on the location of where the test is run.
|
// services don't agree on the location of where the test is run.
|
||||||
CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent
|
CHECK_GET( JSON, QString(), "https://geoip.kde.org/v1/calamares" ) // Check it's consistent
|
||||||
CHECK_GET( JSON, QStringLiteral("timezone"), "https://ipapi.co/json" ) // Different JSON
|
CHECK_GET( JSON, QStringLiteral( "timezone" ), "https://ipapi.co/json" ) // Different JSON
|
||||||
CHECK_GET( JSON, QStringLiteral("timezone"), "http://ip-api.com/json" )
|
CHECK_GET( JSON, QStringLiteral( "timezone" ), "http://ip-api.com/json" )
|
||||||
|
|
||||||
CHECK_GET( JSON, QStringLiteral("Location.TimeZone"), "https://geoip.kde.org/debug" ) // 2-level JSON
|
CHECK_GET( JSON, QStringLiteral( "Location.TimeZone" ), "https://geoip.kde.org/debug" ) // 2-level JSON
|
||||||
|
|
||||||
#ifdef QT_XML_LIB
|
#ifdef QT_XML_LIB
|
||||||
CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format
|
CHECK_GET( XML, QString(), "http://geoip.ubuntu.com/lookup" ) // Ubiquity's XML format
|
||||||
CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service
|
CHECK_GET( XML, QString(), "https://geoip.kde.org/v1/ubiquity" ) // Temporary KDE service
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -48,10 +48,12 @@ getElementTexts( const QByteArray& data, const QString& tag )
|
|||||||
cDebug() << "GeoIP found" << tzElements.length() << "elements";
|
cDebug() << "GeoIP found" << tzElements.length() << "elements";
|
||||||
for ( int it = 0; it < tzElements.length(); ++it )
|
for ( int it = 0; it < tzElements.length(); ++it )
|
||||||
{
|
{
|
||||||
auto e = tzElements.at(it).toElement();
|
auto e = tzElements.at( it ).toElement();
|
||||||
auto e_text = e.text();
|
auto e_text = e.text();
|
||||||
if ( !e_text.isEmpty() )
|
if ( !e_text.isEmpty() )
|
||||||
|
{
|
||||||
elements.append( e_text );
|
elements.append( e_text );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -60,7 +62,9 @@ getElementTexts( const QByteArray& data, const QString& tag )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( elements.count() < 1 )
|
if ( elements.count() < 1 )
|
||||||
|
{
|
||||||
cWarning() << "GeopIP XML had no non-empty elements" << tag;
|
cWarning() << "GeopIP XML had no non-empty elements" << tag;
|
||||||
|
}
|
||||||
|
|
||||||
return elements;
|
return elements;
|
||||||
}
|
}
|
||||||
@ -71,7 +75,9 @@ GeoIPXML::rawReply( const QByteArray& data )
|
|||||||
{
|
{
|
||||||
for ( const auto& e : getElementTexts( data, m_element ) )
|
for ( const auto& e : getElementTexts( data, m_element ) )
|
||||||
if ( !e.isEmpty() )
|
if ( !e.isEmpty() )
|
||||||
|
{
|
||||||
return e;
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
@ -83,11 +89,13 @@ GeoIPXML::processReply( const QByteArray& data )
|
|||||||
{
|
{
|
||||||
auto tz = splitTZString( e );
|
auto tz = splitTZString( e );
|
||||||
if ( !tz.first.isEmpty() )
|
if ( !tz.first.isEmpty() )
|
||||||
|
{
|
||||||
return tz;
|
return tz;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return RegionZonePair();
|
return RegionZonePair();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
|
@ -45,9 +45,9 @@ public:
|
|||||||
explicit GeoIPXML( const QString& element = QString() );
|
explicit GeoIPXML( const QString& element = QString() );
|
||||||
|
|
||||||
virtual RegionZonePair processReply( const QByteArray& ) override;
|
virtual RegionZonePair processReply( const QByteArray& ) override;
|
||||||
virtual QString rawReply(const QByteArray & ) override;
|
virtual QString rawReply( const QByteArray& ) override;
|
||||||
} ;
|
};
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include "Handler.h"
|
#include "Handler.h"
|
||||||
|
|
||||||
#include "GeoIPJSON.h"
|
#include "GeoIPJSON.h"
|
||||||
#if defined(QT_XML_LIB)
|
#if defined( QT_XML_LIB )
|
||||||
#include "GeoIPXML.h"
|
#include "GeoIPXML.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -28,8 +28,8 @@
|
|||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
#include <QEventLoop>
|
#include <QEventLoop>
|
||||||
#include <QNetworkRequest>
|
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
|
#include <QNetworkRequest>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
@ -38,11 +38,15 @@ handlerTypes()
|
|||||||
{
|
{
|
||||||
using Type = CalamaresUtils::GeoIP::Handler::Type;
|
using Type = CalamaresUtils::GeoIP::Handler::Type;
|
||||||
|
|
||||||
|
// *INDENT-OFF*
|
||||||
|
// clang-format off
|
||||||
static const NamedEnumTable<Type> names{
|
static const NamedEnumTable<Type> names{
|
||||||
{ QStringLiteral( "none" ), Type::None},
|
{ QStringLiteral( "none" ), Type::None },
|
||||||
{ QStringLiteral( "json" ), Type::JSON},
|
{ QStringLiteral( "json" ), Type::JSON },
|
||||||
{ QStringLiteral( "xml" ), Type::XML}
|
{ QStringLiteral( "xml" ), Type::XML }
|
||||||
};
|
};
|
||||||
|
// *INDENT-ON*
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
@ -72,7 +76,7 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri
|
|||||||
{
|
{
|
||||||
cWarning() << "GeoIP style *none* does not do anything.";
|
cWarning() << "GeoIP style *none* does not do anything.";
|
||||||
}
|
}
|
||||||
#if !defined(QT_XML_LIB)
|
#if !defined( QT_XML_LIB )
|
||||||
else if ( m_type == Type::XML )
|
else if ( m_type == Type::XML )
|
||||||
{
|
{
|
||||||
m_type = Type::None;
|
m_type = Type::None;
|
||||||
@ -81,9 +85,7 @@ Handler::Handler( const QString& implementation, const QString& url, const QStri
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Handler::~Handler()
|
Handler::~Handler() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static QByteArray
|
static QByteArray
|
||||||
synchronous_get( const QString& urlstring )
|
synchronous_get( const QString& urlstring )
|
||||||
@ -104,17 +106,17 @@ synchronous_get( const QString& urlstring )
|
|||||||
static std::unique_ptr< Interface >
|
static std::unique_ptr< Interface >
|
||||||
create_interface( Handler::Type t, const QString& selector )
|
create_interface( Handler::Type t, const QString& selector )
|
||||||
{
|
{
|
||||||
switch( t )
|
switch ( t )
|
||||||
{
|
{
|
||||||
case Handler::Type::None:
|
case Handler::Type::None:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
case Handler::Type::JSON:
|
case Handler::Type::JSON:
|
||||||
return std::make_unique< GeoIPJSON >( selector );
|
return std::make_unique< GeoIPJSON >( selector );
|
||||||
case Handler::Type::XML:
|
case Handler::Type::XML:
|
||||||
#if defined(QT_XML_LIB)
|
#if defined( QT_XML_LIB )
|
||||||
return std::make_unique< GeoIPXML >( selector );
|
return std::make_unique< GeoIPXML >( selector );
|
||||||
#else
|
#else
|
||||||
return nullptr;
|
return nullptr;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
NOTREACHED return nullptr;
|
NOTREACHED return nullptr;
|
||||||
@ -125,7 +127,9 @@ do_query( Handler::Type type, const QString& url, const QString& selector )
|
|||||||
{
|
{
|
||||||
const auto interface = create_interface( type, selector );
|
const auto interface = create_interface( type, selector );
|
||||||
if ( !interface )
|
if ( !interface )
|
||||||
|
{
|
||||||
return RegionZonePair();
|
return RegionZonePair();
|
||||||
|
}
|
||||||
|
|
||||||
return interface->processReply( synchronous_get( url ) );
|
return interface->processReply( synchronous_get( url ) );
|
||||||
}
|
}
|
||||||
@ -135,7 +139,9 @@ do_raw_query( Handler::Type type, const QString& url, const QString& selector )
|
|||||||
{
|
{
|
||||||
const auto interface = create_interface( type, selector );
|
const auto interface = create_interface( type, selector );
|
||||||
if ( !interface )
|
if ( !interface )
|
||||||
|
{
|
||||||
return QString();
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
return interface->rawReply( synchronous_get( url ) );
|
return interface->rawReply( synchronous_get( url ) );
|
||||||
}
|
}
|
||||||
@ -144,7 +150,9 @@ RegionZonePair
|
|||||||
Handler::get() const
|
Handler::get() const
|
||||||
{
|
{
|
||||||
if ( !isValid() )
|
if ( !isValid() )
|
||||||
|
{
|
||||||
return RegionZonePair();
|
return RegionZonePair();
|
||||||
|
}
|
||||||
return do_query( m_type, m_url, m_selector );
|
return do_query( m_type, m_url, m_selector );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,17 +164,16 @@ Handler::query() const
|
|||||||
QString url = m_url;
|
QString url = m_url;
|
||||||
QString selector = m_selector;
|
QString selector = m_selector;
|
||||||
|
|
||||||
return QtConcurrent::run( [=]
|
return QtConcurrent::run( [=] { return do_query( type, url, selector ); } );
|
||||||
{
|
|
||||||
return do_query( type, url, selector );
|
|
||||||
} );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString
|
QString
|
||||||
Handler::getRaw() const
|
Handler::getRaw() const
|
||||||
{
|
{
|
||||||
if ( !isValid() )
|
if ( !isValid() )
|
||||||
|
{
|
||||||
return QString();
|
return QString();
|
||||||
|
}
|
||||||
return do_raw_query( m_type, m_url, m_selector );
|
return do_raw_query( m_type, m_url, m_selector );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,11 +185,8 @@ Handler::queryRaw() const
|
|||||||
QString url = m_url;
|
QString url = m_url;
|
||||||
QString selector = m_selector;
|
QString selector = m_selector;
|
||||||
|
|
||||||
return QtConcurrent::run( [=]
|
return QtConcurrent::run( [=] { return do_raw_query( type, url, selector ); } );
|
||||||
{
|
|
||||||
return do_raw_query( type, url, selector );
|
|
||||||
} );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
|
|
||||||
#include "Interface.h"
|
#include "Interface.h"
|
||||||
|
|
||||||
#include <QtConcurrent/QtConcurrentRun>
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVariantMap>
|
#include <QVariantMap>
|
||||||
|
#include <QtConcurrent/QtConcurrentRun>
|
||||||
|
|
||||||
namespace CalamaresUtils
|
namespace CalamaresUtils
|
||||||
{
|
{
|
||||||
@ -46,7 +46,7 @@ public:
|
|||||||
None,
|
None,
|
||||||
JSON,
|
JSON,
|
||||||
XML
|
XML
|
||||||
} ;
|
};
|
||||||
|
|
||||||
/** @brief An unconfigured handler; this always returns errors. */
|
/** @brief An unconfigured handler; this always returns errors. */
|
||||||
Handler();
|
Handler();
|
||||||
@ -89,7 +89,6 @@ private:
|
|||||||
const QString m_selector;
|
const QString m_selector;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -25,14 +25,12 @@ namespace CalamaresUtils
|
|||||||
namespace GeoIP
|
namespace GeoIP
|
||||||
{
|
{
|
||||||
|
|
||||||
Interface::Interface(const QString& e)
|
Interface::Interface( const QString& e )
|
||||||
: m_element( e )
|
: m_element( e )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Interface::~Interface()
|
Interface::~Interface() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
RegionZonePair
|
RegionZonePair
|
||||||
splitTZString( const QString& tz )
|
splitTZString( const QString& tz )
|
||||||
@ -53,5 +51,5 @@ splitTZString( const QString& tz )
|
|||||||
return RegionZonePair( QString(), QString() );
|
return RegionZonePair( QString(), QString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
class QByteArray;
|
class QByteArray;
|
||||||
|
|
||||||
namespace CalamaresUtils
|
namespace CalamaresUtils
|
||||||
{
|
{
|
||||||
namespace GeoIP
|
namespace GeoIP
|
||||||
{
|
{
|
||||||
@ -38,18 +38,27 @@ namespace GeoIP
|
|||||||
* pasting the strings back together with a "/" is the right thing to
|
* pasting the strings back together with a "/" is the right thing to
|
||||||
* do. The Zone **may** contain a "/" (e.g. "Kentucky/Monticello").
|
* do. The Zone **may** contain a "/" (e.g. "Kentucky/Monticello").
|
||||||
*/
|
*/
|
||||||
class DLLEXPORT RegionZonePair : public QPair<QString, QString>
|
class DLLEXPORT RegionZonePair : public QPair< QString, QString >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** @brief Construct from an existing pair. */
|
/** @brief Construct from an existing pair. */
|
||||||
explicit RegionZonePair( const QPair& p ) : QPair(p) { }
|
explicit RegionZonePair( const QPair& p )
|
||||||
|
: QPair( p )
|
||||||
|
{
|
||||||
|
}
|
||||||
/** @brief Construct from two strings, like qMakePair(). */
|
/** @brief Construct from two strings, like qMakePair(). */
|
||||||
RegionZonePair( const QString& region, const QString& zone ) : QPair( region, zone ) { }
|
RegionZonePair( const QString& region, const QString& zone )
|
||||||
|
: QPair( region, zone )
|
||||||
|
{
|
||||||
|
}
|
||||||
/** @brief An invalid zone pair (empty strings). */
|
/** @brief An invalid zone pair (empty strings). */
|
||||||
RegionZonePair() : QPair( QString(), QString() ) { }
|
RegionZonePair()
|
||||||
|
: QPair( QString(), QString() )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool isValid() const { return !first.isEmpty(); }
|
bool isValid() const { return !first.isEmpty(); }
|
||||||
} ;
|
};
|
||||||
|
|
||||||
/** @brief Splits a region/zone string into a pair.
|
/** @brief Splits a region/zone string into a pair.
|
||||||
*
|
*
|
||||||
@ -60,8 +69,7 @@ public:
|
|||||||
* pair of empty QStrings if it can't. (e.g. America/North Dakota/Beulah
|
* pair of empty QStrings if it can't. (e.g. America/North Dakota/Beulah
|
||||||
* will return "America", "North_Dakota/Beulah").
|
* will return "America", "North_Dakota/Beulah").
|
||||||
*/
|
*/
|
||||||
DLLEXPORT RegionZonePair
|
DLLEXPORT RegionZonePair splitTZString( const QString& s );
|
||||||
splitTZString( const QString& s );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Interface for GeoIP retrievers.
|
* @brief Interface for GeoIP retrievers.
|
||||||
@ -93,8 +101,8 @@ protected:
|
|||||||
Interface( const QString& e = QString() );
|
Interface( const QString& e = QString() );
|
||||||
|
|
||||||
QString m_element; // string for selecting from data
|
QString m_element; // string for selecting from data
|
||||||
} ;
|
};
|
||||||
|
|
||||||
}
|
} // namespace GeoIP
|
||||||
} // namespace
|
} // namespace CalamaresUtils
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,34 +30,40 @@
|
|||||||
using std::cerr;
|
using std::cerr;
|
||||||
using namespace CalamaresUtils::GeoIP;
|
using namespace CalamaresUtils::GeoIP;
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int
|
||||||
|
main( int argc, char** argv )
|
||||||
{
|
{
|
||||||
if (argc != 2)
|
if ( argc != 2 )
|
||||||
{
|
{
|
||||||
cerr << "Usage: curl url | test_geoip <format>\n";
|
cerr << "Usage: curl url | test_geoip <format>\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Interface* handler = nullptr;
|
Interface* handler = nullptr;
|
||||||
if ( QStringLiteral( "json" ) == argv[1] )
|
if ( QStringLiteral( "json" ) == argv[ 1 ] )
|
||||||
|
{
|
||||||
handler = new GeoIPJSON;
|
handler = new GeoIPJSON;
|
||||||
|
}
|
||||||
#ifdef QT_XML_LIB
|
#ifdef QT_XML_LIB
|
||||||
else if ( QStringLiteral( "xml" ) == argv[1] )
|
else if ( QStringLiteral( "xml" ) == argv[ 1 ] )
|
||||||
|
{
|
||||||
handler = new GeoIPXML;
|
handler = new GeoIPXML;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( !handler )
|
if ( !handler )
|
||||||
{
|
{
|
||||||
cerr << "Unknown format '" << argv[1] << "'\n";
|
cerr << "Unknown format '" << argv[ 1 ] << "'\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
while( !std::cin.eof() ) {
|
while ( !std::cin.eof() )
|
||||||
char arr[1024];
|
{
|
||||||
std::cin.read(arr, sizeof(arr));
|
char arr[ 1024 ];
|
||||||
int s = static_cast<int>( std::cin.gcount() );
|
std::cin.read( arr, sizeof( arr ) );
|
||||||
ba.append(arr, s);
|
int s = static_cast< int >( std::cin.gcount() );
|
||||||
|
ba.append( arr, s );
|
||||||
}
|
}
|
||||||
|
|
||||||
auto tz = handler->processReply( ba );
|
auto tz = handler->processReply( ba );
|
||||||
@ -67,7 +73,8 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "TimeZone Region=" << tz.first.toLatin1().constData() << "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n';
|
std::cout << "TimeZone Region=" << tz.first.toLatin1().constData()
|
||||||
|
<< "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -35,6 +35,8 @@ LocaleTests::~LocaleTests() {}
|
|||||||
void
|
void
|
||||||
LocaleTests::initTestCase()
|
LocaleTests::initTestCase()
|
||||||
{
|
{
|
||||||
|
// Otherwise plain get() is dubious in the TranslatableConfiguration tests
|
||||||
|
QVERIFY( ( QLocale().name() == "C" ) || ( QLocale().name() == "en_US" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -121,7 +123,6 @@ LocaleTests::testTranslatableConfig1()
|
|||||||
QVERIFY( ts0.isEmpty() );
|
QVERIFY( ts0.isEmpty() );
|
||||||
QCOMPARE( ts0.count(), 1 ); // the empty string
|
QCOMPARE( ts0.count(), 1 ); // the empty string
|
||||||
|
|
||||||
QCOMPARE( QLocale().name(), "C" ); // Otherwise plain get() is dubious
|
|
||||||
CalamaresUtils::Locale::TranslatedString ts1( "Hello" );
|
CalamaresUtils::Locale::TranslatedString ts1( "Hello" );
|
||||||
QCOMPARE( ts1.count(), 1 );
|
QCOMPARE( ts1.count(), 1 );
|
||||||
QVERIFY( !ts1.isEmpty() );
|
QVERIFY( !ts1.isEmpty() );
|
||||||
@ -144,7 +145,6 @@ LocaleTests::testTranslatableConfig1()
|
|||||||
void
|
void
|
||||||
LocaleTests::testTranslatableConfig2()
|
LocaleTests::testTranslatableConfig2()
|
||||||
{
|
{
|
||||||
QCOMPARE( QLocale().name(), "C" ); // Otherwise plain get() is dubious
|
|
||||||
QVariantMap map;
|
QVariantMap map;
|
||||||
|
|
||||||
for ( const auto& language : someLanguages() )
|
for ( const auto& language : someLanguages() )
|
||||||
|
@ -51,14 +51,14 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @brief How many strings (translations) are there?
|
/** @brief How many strings (translations) are there?
|
||||||
*
|
*
|
||||||
* This is always at least 1 (for the untranslated string),
|
* This is always at least 1 (for the untranslated string),
|
||||||
* but may be more than 1 even when isEmpty() is true --
|
* but may be more than 1 even when isEmpty() is true --
|
||||||
* if there is no untranslated version, for instance.
|
* if there is no untranslated version, for instance.
|
||||||
*/
|
*/
|
||||||
int count() const { return m_strings.count(); }
|
int count() const { return m_strings.count(); }
|
||||||
/** @brief Consider this string empty?
|
/** @brief Consider this string empty?
|
||||||
*
|
*
|
||||||
* Only the state of the untranslated string is considered,
|
* Only the state of the untranslated string is considered,
|
||||||
* so count() may be more than 1 even while the string is empty.
|
* so count() may be more than 1 even while the string is empty.
|
||||||
*/
|
*/
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# view modules, view steps, widgets, and branding.
|
# view modules, view steps, widgets, and branding.
|
||||||
|
|
||||||
# The UI libs use the non-UI library
|
# The UI libs use the non-UI library
|
||||||
include_directories( ${CMAKE_SOURCE_DIR}/src/libcalamares ${CMAKE_BINARY_DIR}/src/libcalamares )
|
include_directories( ${CMAKE_SOURCE_DIR}/src/libcalamares ${CMAKE_BINARY_DIR}/src/libcalamares ${CMAKE_SOURCE_DIR} )
|
||||||
|
|
||||||
set( calamaresui_SOURCES
|
set( calamaresui_SOURCES
|
||||||
modulesystem/CppJobModule.cpp
|
modulesystem/CppJobModule.cpp
|
||||||
@ -18,16 +18,16 @@ set( calamaresui_SOURCES
|
|||||||
utils/ImageRegistry.cpp
|
utils/ImageRegistry.cpp
|
||||||
utils/Paste.cpp
|
utils/Paste.cpp
|
||||||
|
|
||||||
utils/qjsonmodel.cpp
|
${CMAKE_SOURCE_DIR}/3rdparty/qjsonmodel.cpp
|
||||||
utils/qjsonitem.cpp
|
${CMAKE_SOURCE_DIR}/3rdparty/qjsonitem.cpp
|
||||||
|
|
||||||
viewpages/BlankViewStep.cpp
|
viewpages/BlankViewStep.cpp
|
||||||
viewpages/ViewStep.cpp
|
viewpages/ViewStep.cpp
|
||||||
|
|
||||||
widgets/ClickableLabel.cpp
|
widgets/ClickableLabel.cpp
|
||||||
widgets/FixedAspectRatioLabel.cpp
|
widgets/FixedAspectRatioLabel.cpp
|
||||||
widgets/waitingspinnerwidget.cpp
|
|
||||||
widgets/WaitingWidget.cpp
|
widgets/WaitingWidget.cpp
|
||||||
|
${CMAKE_SOURCE_DIR}/3rdparty/waitingspinnerwidget.cpp
|
||||||
|
|
||||||
ExecutionViewStep.cpp
|
ExecutionViewStep.cpp
|
||||||
Branding.cpp
|
Branding.cpp
|
||||||
@ -36,10 +36,9 @@ set( calamaresui_SOURCES
|
|||||||
|
|
||||||
# Don't warn about third-party sources
|
# Don't warn about third-party sources
|
||||||
mark_thirdparty_code(
|
mark_thirdparty_code(
|
||||||
utils/ImageRegistry.cpp
|
${CMAKE_SOURCE_DIR}/3rdparty/qjsonitem.cpp
|
||||||
utils/qjsonitem.cpp
|
${CMAKE_SOURCE_DIR}/3rdparty/qjsonmodel.cpp
|
||||||
utils/qjsonmodel.cpp
|
${CMAKE_SOURCE_DIR}/3rdparty/waitingspinnerwidget.cpp
|
||||||
widgets/waitingspinnerwidget.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set( calamaresui_UI
|
set( calamaresui_UI
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include "Branding.h"
|
#include "Branding.h"
|
||||||
#include "modulesystem/Module.h"
|
#include "modulesystem/Module.h"
|
||||||
#include "modulesystem/ModuleManager.h"
|
#include "modulesystem/ModuleManager.h"
|
||||||
#include "utils/qjsonmodel.h"
|
|
||||||
|
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "Job.h"
|
#include "Job.h"
|
||||||
@ -31,11 +30,13 @@
|
|||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Retranslator.h"
|
#include "utils/Retranslator.h"
|
||||||
|
|
||||||
|
#include "3rdparty/qjsonmodel.h"
|
||||||
|
|
||||||
#ifdef WITH_PYTHONQT
|
#ifdef WITH_PYTHONQT
|
||||||
#include <gui/PythonQtScriptingConsole.h>
|
|
||||||
#include "ViewManager.h"
|
#include "ViewManager.h"
|
||||||
#include "viewpages/PythonQtViewStep.h"
|
#include "viewpages/PythonQtViewStep.h"
|
||||||
|
|
||||||
|
#include <gui/PythonQtScriptingConsole.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
|
@ -20,7 +20,8 @@
|
|||||||
#include "WaitingWidget.h"
|
#include "WaitingWidget.h"
|
||||||
|
|
||||||
#include "utils/CalamaresUtilsGui.h"
|
#include "utils/CalamaresUtilsGui.h"
|
||||||
#include "waitingspinnerwidget.h"
|
|
||||||
|
#include "3rdparty/waitingspinnerwidget.h"
|
||||||
|
|
||||||
#include <QBoxLayout>
|
#include <QBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
@ -183,23 +183,6 @@ PackageChooserViewStep::setConfigurationMap( const QVariantMap& configurationMap
|
|||||||
fillModel( configurationMap.value( "items" ).toList() );
|
fillModel( configurationMap.value( "items" ).toList() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: replace this hard-coded model
|
|
||||||
if ( !m_model )
|
|
||||||
{
|
|
||||||
m_model = new PackageListModel( nullptr );
|
|
||||||
m_model->addPackage( PackageItem { QString(),
|
|
||||||
QString(),
|
|
||||||
"No Desktop",
|
|
||||||
"Please pick a desktop environment from the list. "
|
|
||||||
"If you don't want to install a desktop, that's fine, "
|
|
||||||
"your system will start up in text-only mode and you can "
|
|
||||||
"install a desktop environment later.",
|
|
||||||
":/images/no-selection.png" } );
|
|
||||||
m_model->addPackage( PackageItem { "kde", "kde", "Plasma", "Plasma Desktop", ":/images/kde.png" } );
|
|
||||||
m_model->addPackage( PackageItem {
|
|
||||||
"gnome", "gnome", "GNOME", "GNU Networked Object Modeling Environment Desktop", ":/images/gnome.png" } );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( first_time && m_widget && m_model )
|
if ( first_time && m_widget && m_model )
|
||||||
{
|
{
|
||||||
hookupModel();
|
hookupModel();
|
||||||
|
@ -45,13 +45,23 @@ PackageChooserTests::testBogus()
|
|||||||
void
|
void
|
||||||
PackageChooserTests::testAppData()
|
PackageChooserTests::testAppData()
|
||||||
{
|
{
|
||||||
// Path from the build-dir
|
// Path from the build-dir and from the running-the-test varies,
|
||||||
QString appdataName( "../io.calamares.calamares.appdata.xml" );
|
// for in-source build, for build/, and for tests-in-build/,
|
||||||
|
// so look in multiple places.
|
||||||
|
QString appdataName( "io.calamares.calamares.appdata.xml" );
|
||||||
|
for ( const auto& prefix : QStringList { "", "../", "../../../", "../../../../" } )
|
||||||
|
{
|
||||||
|
if ( QFile::exists( prefix + appdataName ) )
|
||||||
|
{
|
||||||
|
appdataName = prefix + appdataName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
QVERIFY( QFile::exists( appdataName ) );
|
QVERIFY( QFile::exists( appdataName ) );
|
||||||
|
|
||||||
QVariantMap m;
|
QVariantMap m;
|
||||||
m.insert( "appdata", appdataName );
|
m.insert( "appdata", appdataName );
|
||||||
|
|
||||||
PackageItem p1 = PackageItem::fromAppData( m );
|
PackageItem p1 = PackageItem::fromAppData( m );
|
||||||
#ifdef HAVE_XML
|
#ifdef HAVE_XML
|
||||||
QVERIFY( p1.isValid() );
|
QVERIFY( p1.isValid() );
|
||||||
@ -63,10 +73,10 @@ PackageChooserTests::testAppData()
|
|||||||
QCOMPARE( p1.description.get( QLocale( "en_GB" ) ), "Calamares Linux Installer" );
|
QCOMPARE( p1.description.get( QLocale( "en_GB" ) ), "Calamares Linux Installer" );
|
||||||
QCOMPARE( p1.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." );
|
QCOMPARE( p1.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." );
|
||||||
QVERIFY( p1.screenshot.isNull() );
|
QVERIFY( p1.screenshot.isNull() );
|
||||||
|
|
||||||
m.insert( "id", "calamares" );
|
m.insert( "id", "calamares" );
|
||||||
m.insert( "screenshot", ":/images/calamares.png" );
|
m.insert( "screenshot", ":/images/calamares.png" );
|
||||||
PackageItem p2= PackageItem::fromAppData( m );
|
PackageItem p2 = PackageItem::fromAppData( m );
|
||||||
QVERIFY( p2.isValid() );
|
QVERIFY( p2.isValid() );
|
||||||
QCOMPARE( p2.id, "calamares" );
|
QCOMPARE( p2.id, "calamares" );
|
||||||
QCOMPARE( p2.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." );
|
QCOMPARE( p2.description.get( QLocale( "nl" ) ), "Calamares is een installatieprogramma voor Linux distributies." );
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.6 KiB |
@ -1,8 +1,6 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file>images/no-selection.png</file>
|
<file>images/no-selection.png</file>
|
||||||
<file>images/kde.png</file>
|
|
||||||
<file>images/gnome.png</file>
|
|
||||||
<file>images/calamares.png</file>
|
<file>images/calamares.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
option( DEBUG_PARTITION_UNSAFE "Allow unsafe partitioning choices." OFF )
|
option( DEBUG_PARTITION_UNSAFE "Allow unsafe partitioning choices." OFF )
|
||||||
option( DEBUG_PARTITION_LAME "Unsafe partitioning will error out on exec." ON )
|
option( DEBUG_PARTITION_LAME "Unsafe partitioning will error out on exec." ON )
|
||||||
|
|
||||||
|
include_directories( ${CMAKE_SOURCE_DIR} ) # For 3rdparty
|
||||||
|
|
||||||
set( _partition_defs )
|
set( _partition_defs )
|
||||||
if( DEBUG_PARTITION_UNSAFE )
|
if( DEBUG_PARTITION_UNSAFE )
|
||||||
if( DEBUG_PARTITION_LAME )
|
if( DEBUG_PARTITION_LAME )
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include "ScanningDialog.h"
|
#include "ScanningDialog.h"
|
||||||
|
|
||||||
#include "widgets/waitingspinnerwidget.h"
|
#include "3rdparty/waitingspinnerwidget.h"
|
||||||
|
|
||||||
#include <QBoxLayout>
|
#include <QBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
Loading…
Reference in New Issue
Block a user