mirror of
https://github.com/QuasarApp/CQtDeployer.git
synced 2025-04-27 18:24:33 +00:00
commit
b0c7b78d5d
@ -19,7 +19,7 @@ TEMPLATE = lib
|
|||||||
|
|
||||||
DEFINES += DEPLOY_LIBRARY
|
DEFINES += DEPLOY_LIBRARY
|
||||||
|
|
||||||
VERSION = 1.5.0.25
|
VERSION = 1.5.0.26
|
||||||
|
|
||||||
DEFINES += APP_VERSION='\\"$$VERSION\\"'
|
DEFINES += APP_VERSION='\\"$$VERSION\\"'
|
||||||
|
|
||||||
|
@ -775,18 +775,6 @@ QSet<QString> ConfigParser::getQtPathesFromTargets() {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
QtMajorVersion ConfigParser::isNeededQt() const {
|
|
||||||
|
|
||||||
auto Qt = QtMajorVersion::NoQt;
|
|
||||||
for (const auto &i: _config.targets()) {
|
|
||||||
if (i.isValid()) {
|
|
||||||
Qt = Qt | i.isDependetOfQt();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Qt;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConfigParser::setTargetDir(const QString &target) {
|
void ConfigParser::setTargetDir(const QString &target) {
|
||||||
|
|
||||||
if (QuasarAppUtils::Params::isEndable("targetDir")) {
|
if (QuasarAppUtils::Params::isEndable("targetDir")) {
|
||||||
@ -1083,7 +1071,7 @@ bool ConfigParser::initQmakePrivate(const QString &qmake) {
|
|||||||
bool ConfigParser::initQmake() {
|
bool ConfigParser::initQmake() {
|
||||||
|
|
||||||
|
|
||||||
if (!isNeededQt()) {
|
if (!_config.isNeededQt()) {
|
||||||
QuasarAppUtils::Params::log("deploy only C/C++ libraryes because a qmake is not needed"
|
QuasarAppUtils::Params::log("deploy only C/C++ libraryes because a qmake is not needed"
|
||||||
" for the distribution",
|
" for the distribution",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
@ -1191,7 +1179,7 @@ bool ConfigParser::setQmake(const QString &value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_config.qtDir.setQtVersion(isNeededQt());
|
_config.qtDir.setQtVersion(_config.isNeededQt());
|
||||||
|
|
||||||
_config.envirement.addEnv(_config.qtDir.getLibs());
|
_config.envirement.addEnv(_config.qtDir.getLibs());
|
||||||
_config.envirement.addEnv(_config.qtDir.getBins());
|
_config.envirement.addEnv(_config.qtDir.getBins());
|
||||||
@ -1257,7 +1245,7 @@ bool ConfigParser::setQtDir(const QString &value) {
|
|||||||
_config.qtDir.setQtPlatform(Platform::Win);
|
_config.qtDir.setQtPlatform(Platform::Win);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_config.qtDir.setQtVersion(isNeededQt());
|
_config.qtDir.setQtVersion(_config.isNeededQt());
|
||||||
|
|
||||||
_config.envirement.addEnv(_config.qtDir.getLibs());
|
_config.envirement.addEnv(_config.qtDir.getLibs());
|
||||||
_config.envirement.addEnv(_config.qtDir.getBins());
|
_config.envirement.addEnv(_config.qtDir.getBins());
|
||||||
@ -1326,7 +1314,7 @@ void ConfigParser::initExtraNames() {
|
|||||||
* We need to add to extra names libraries without which qt will not work,
|
* We need to add to extra names libraries without which qt will not work,
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
if (isNeededQt()) {
|
if (_config.isNeededQt()) {
|
||||||
auto libs = DeployCore::Qt3rdpartyLibs( _config.getPlatformOfAll());
|
auto libs = DeployCore::Qt3rdpartyLibs( _config.getPlatformOfAll());
|
||||||
deployExtraNames(libs);
|
deployExtraNames(libs);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,6 @@ private:
|
|||||||
|
|
||||||
QList<iDistribution *> getDistribution();
|
QList<iDistribution *> getDistribution();
|
||||||
|
|
||||||
QtMajorVersion isNeededQt() const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CQT_H
|
#endif // CQT_H
|
||||||
|
@ -113,6 +113,32 @@ QString DeployConfig::getRunScript(const QString &targetName) const {
|
|||||||
return _runScripts.value(targetName, "");
|
return _runScripts.value(targetName, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QtMajorVersion DeployConfig::isNeededQt() const {
|
||||||
|
|
||||||
|
auto Qt = QtMajorVersion::NoQt;
|
||||||
|
for (const auto &i: targets()) {
|
||||||
|
if (i.isValid()) {
|
||||||
|
Qt = Qt | i.isDependetOfQt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Qt;
|
||||||
|
}
|
||||||
|
|
||||||
|
QtMajorVersion DeployConfig::isNeededQt(const QString &pacakge) const {
|
||||||
|
const auto targetsKeys = packages().value(pacakge, DistroModule{""}).targets();
|
||||||
|
|
||||||
|
auto Qt = QtMajorVersion::NoQt;
|
||||||
|
for (const auto &i: targetsKeys) {
|
||||||
|
auto target = targets().value(i);
|
||||||
|
if (target.isValid()) {
|
||||||
|
Qt = Qt | target.isDependetOfQt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Qt;
|
||||||
|
}
|
||||||
|
|
||||||
const QHash<QString, TargetInfo> &DeployConfig::targets() const {
|
const QHash<QString, TargetInfo> &DeployConfig::targets() const {
|
||||||
return _targets;
|
return _targets;
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,19 @@ public:
|
|||||||
void registerRunScript(const QString& targetName, const QString& scriptPath);
|
void registerRunScript(const QString& targetName, const QString& scriptPath);
|
||||||
QString getRunScript(const QString& targetName) const;
|
QString getRunScript(const QString& targetName) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief isNeededQt This method return all needed qt major version for all targets.
|
||||||
|
* @return qt major version
|
||||||
|
*/
|
||||||
|
QtMajorVersion isNeededQt() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief isNeededQt This method return all needed qt major versions for the @a pacakge.
|
||||||
|
* @param pacakge This is validation pacakge.
|
||||||
|
* @return qt major version
|
||||||
|
*/
|
||||||
|
QtMajorVersion isNeededQt(const QString& pacakge) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -438,7 +438,7 @@ bool Extracter::extractQml() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
QML ownQmlScaner(cnf->qtDir.getQmls());
|
QML ownQmlScaner(cnf->qtDir.getQmls(), cnf->isNeededQt(i.key()));
|
||||||
|
|
||||||
if (!ownQmlScaner.scan(plugins, info.absoluteFilePath())) {
|
if (!ownQmlScaner.scan(plugins, info.absoluteFilePath())) {
|
||||||
QuasarAppUtils::Params::log("qml scaner run failed!",
|
QuasarAppUtils::Params::log("qml scaner run failed!",
|
||||||
|
@ -9,11 +9,31 @@
|
|||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <quasarapp.h>
|
#include "quasarapp.h"
|
||||||
#include <deploycore.h>
|
#include "deploycore.h"
|
||||||
#include "deployconfig.h"
|
#include "deployconfig.h"
|
||||||
|
|
||||||
QStringList QML::extractImportsFromFile(const QString &filepath) {
|
QStringList QML::extractImportLine(const QString& line) const {
|
||||||
|
QStringList result;
|
||||||
|
QStringList list = line.split(" ", splitbehavior);
|
||||||
|
|
||||||
|
if (list.count() == 3 || (list.count() == 5 && list[3] == "as")) {
|
||||||
|
if (list[2] == "auto" || (_qtVersion & QtMajorVersion::Qt6)) {
|
||||||
|
// qt6
|
||||||
|
result << (list[1].replace(".", "/"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// qt5
|
||||||
|
result << (list[2][0] + "#" + list[1].replace(".", "/"));
|
||||||
|
} else if (list.count() == 2 || (list.count() == 4 && list[2] == "as")) {
|
||||||
|
// qt6
|
||||||
|
result << (list[1].replace(".", "/"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList QML::extractImportsFromFile(const QString &filepath) const {
|
||||||
QStringList imports;
|
QStringList imports;
|
||||||
QFile F(filepath);
|
QFile F(filepath);
|
||||||
if (!F.open(QIODevice::ReadOnly)) return QStringList();
|
if (!F.open(QIODevice::ReadOnly)) return QStringList();
|
||||||
@ -21,28 +41,15 @@ QStringList QML::extractImportsFromFile(const QString &filepath) {
|
|||||||
QString content = F.readAll();
|
QString content = F.readAll();
|
||||||
content.remove(QRegExp("\\{(.*)\\}"));
|
content.remove(QRegExp("\\{(.*)\\}"));
|
||||||
content.remove(QRegExp("/\\*(.*)\\*/"));
|
content.remove(QRegExp("/\\*(.*)\\*/"));
|
||||||
|
const auto list = content.split("\n");
|
||||||
for (const QString &line : content.split("\n"))
|
for (const QString &line : list)
|
||||||
for (QString &word : line.split(";", splitbehavior))
|
for (QString &word : line.split(";", splitbehavior))
|
||||||
{
|
{
|
||||||
word = word.simplified();
|
word = word.simplified();
|
||||||
if (word.startsWith("//")) continue;
|
if (word.startsWith("//")) continue;
|
||||||
if (!word.startsWith("import")) continue;
|
if (!word.startsWith("import")) continue;
|
||||||
|
|
||||||
QStringList list = word.split(" ", splitbehavior);
|
imports += extractImportLine(word);
|
||||||
|
|
||||||
if (list.count() == 3 || (list.count() == 5 && list[3] == "as")) {
|
|
||||||
if (list[2] == "auto") {
|
|
||||||
// qt6
|
|
||||||
imports << (list[1].replace(".", "/"));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// qt5
|
|
||||||
imports << (list[2][0] + "#" + list[1].replace(".", "/"));
|
|
||||||
} else if (list.count() == 2 || (list.count() == 4 && list[2] == "as")) {
|
|
||||||
// qt6
|
|
||||||
imports << (list[1].replace(".", "/"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return imports;
|
return imports;
|
||||||
@ -56,11 +63,24 @@ bool QML::extractImportsFromDir(const QString &path, bool recursive) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto files = dir.entryInfoList(QStringList() << "*.qml" << "*.QML", QDir::Files);
|
auto files = dir.entryInfoList(QStringList() << "*.qml" << "*.QML", QDir::Files);
|
||||||
|
auto qmlmodule = dir.entryInfoList(QStringList() << "qmldir", QDir::Files);
|
||||||
|
|
||||||
auto dirs = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs);
|
auto dirs = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs);
|
||||||
|
|
||||||
for (const auto &info: files) {
|
for (const auto &info: files) {
|
||||||
auto imports = extractImportsFromFile(info.absoluteFilePath());
|
auto imports = extractImportsFromFile(info.absoluteFilePath());
|
||||||
for (auto import : imports) {
|
for (const auto &import : qAsConst(imports)) {
|
||||||
|
if (!_imports.contains(import)) {
|
||||||
|
_imports.insert(import);
|
||||||
|
extractImportsFromDir(getPathFromImport(import), recursive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& module: qAsConst(qmlmodule)) {
|
||||||
|
QStringList imports = extractImportsFromQmlModule(module.absoluteFilePath());
|
||||||
|
|
||||||
|
for (const auto &import : qAsConst(imports)) {
|
||||||
if (!_imports.contains(import)) {
|
if (!_imports.contains(import)) {
|
||||||
_imports.insert(import);
|
_imports.insert(import);
|
||||||
extractImportsFromDir(getPathFromImport(import), recursive);
|
extractImportsFromDir(getPathFromImport(import), recursive);
|
||||||
@ -123,7 +143,7 @@ bool QML::deployPath(const QString &path, QStringList &res) {
|
|||||||
QDir dir(path);
|
QDir dir(path);
|
||||||
auto infoList = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs);
|
auto infoList = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs);
|
||||||
|
|
||||||
for (auto info : infoList) {
|
for (const auto &info : qAsConst(infoList)) {
|
||||||
if (DeployCore::isDebugFile(info.fileName())) {
|
if (DeployCore::isDebugFile(info.fileName())) {
|
||||||
QuasarAppUtils::Params::log("sciped debug lib " +
|
QuasarAppUtils::Params::log("sciped debug lib " +
|
||||||
info.absoluteFilePath());
|
info.absoluteFilePath());
|
||||||
@ -156,12 +176,32 @@ bool QML::scanQmlTree(const QString &qmlTree) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QML::addImport() {
|
QStringList QML::extractImportsFromQmlModule(const QString &module) const {
|
||||||
|
QStringList imports;
|
||||||
|
QFile F(module);
|
||||||
|
if (!F.open(QIODevice::ReadOnly)) return QStringList();
|
||||||
|
|
||||||
|
QString content = F.readAll();
|
||||||
|
const auto list = content.split("\n");
|
||||||
|
for (QString line : list) {
|
||||||
|
line = line.simplified();
|
||||||
|
if (line.startsWith("//") || line.startsWith("#")) continue;
|
||||||
|
if (!line.startsWith("depends")) continue;
|
||||||
|
|
||||||
|
QStringList list = line.split(" ", splitbehavior);
|
||||||
|
imports += extractImportLine(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
return imports;
|
||||||
}
|
}
|
||||||
|
|
||||||
QML::QML(const QString &qmlRoot) {
|
void QML::setQtVersion(const QtMajorVersion &qtVersion) {
|
||||||
|
_qtVersion = qtVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
QML::QML(const QString &qmlRoot, QtMajorVersion qtVersion) {
|
||||||
_qmlRoot = qmlRoot;
|
_qmlRoot = qmlRoot;
|
||||||
|
setQtVersion(qtVersion);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +215,7 @@ bool QML::scan(QStringList &res, const QString& _qmlProjectDir) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto &import : _imports) {
|
for (const auto &import : qAsConst(_imports)) {
|
||||||
res.push_back(getPathFromImport(import));
|
res.push_back(getPathFromImport(import));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
Deploy/qml.h
11
Deploy/qml.h
@ -11,11 +11,12 @@
|
|||||||
#include <QSet>
|
#include <QSet>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include "deploy_global.h"
|
#include "deploy_global.h"
|
||||||
|
#include "deploycore.h"
|
||||||
|
|
||||||
class DEPLOYSHARED_EXPORT QML {
|
class DEPLOYSHARED_EXPORT QML {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QStringList extractImportsFromFile(const QString &filepath);
|
QStringList extractImportsFromFile(const QString &filepath) const;
|
||||||
|
|
||||||
bool extractImportsFromDir(const QString &path, bool recursive = false);
|
bool extractImportsFromDir(const QString &path, bool recursive = false);
|
||||||
|
|
||||||
@ -23,15 +24,19 @@ private:
|
|||||||
|
|
||||||
bool deployPath( const QString& path, QStringList& res);
|
bool deployPath( const QString& path, QStringList& res);
|
||||||
bool scanQmlTree(const QString& qmlTree);
|
bool scanQmlTree(const QString& qmlTree);
|
||||||
void addImport();
|
QStringList extractImportsFromQmlModule(const QString& module) const;
|
||||||
QString _qmlRoot = "";
|
QString _qmlRoot = "";
|
||||||
QSet<QString> _imports;
|
QSet<QString> _imports;
|
||||||
QSet<QString> secondVersions;
|
QSet<QString> secondVersions;
|
||||||
|
QtMajorVersion _qtVersion = QtMajorVersion::Qt5;
|
||||||
|
|
||||||
|
QStringList extractImportLine(const QString &line) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QML(const QString& qmlRoot);
|
QML(const QString& qmlRoot, QtMajorVersion isQt6);
|
||||||
|
|
||||||
bool scan(QStringList &res, const QString &_qmlProjectDir);
|
bool scan(QStringList &res, const QString &_qmlProjectDir);
|
||||||
|
void setQtVersion(const QtMajorVersion &qtVersion);
|
||||||
|
|
||||||
friend class deploytest;
|
friend class deploytest;
|
||||||
};
|
};
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<WizardDefaultWidth>640px</WizardDefaultWidth>
|
<WizardDefaultWidth>640px</WizardDefaultWidth>
|
||||||
<WizardDefaultHeight>400px</WizardDefaultHeight>
|
<WizardDefaultHeight>400px</WizardDefaultHeight>
|
||||||
<Name>CQtDeployer</Name>
|
<Name>CQtDeployer</Name>
|
||||||
<Version>1.5.0.25</Version>
|
<Version>1.5.0.26</Version>
|
||||||
<Title>CQtDeployer</Title>
|
<Title>CQtDeployer</Title>
|
||||||
<Publisher>QuasarApp</Publisher>
|
<Publisher>QuasarApp</Publisher>
|
||||||
<StartMenuDir>CQtDeployer</StartMenuDir>
|
<StartMenuDir>CQtDeployer</StartMenuDir>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<WizardDefaultWidth>640px</WizardDefaultWidth>
|
<WizardDefaultWidth>640px</WizardDefaultWidth>
|
||||||
<WizardDefaultHeight>400px</WizardDefaultHeight>
|
<WizardDefaultHeight>400px</WizardDefaultHeight>
|
||||||
<Name>CQtDeployer</Name>
|
<Name>CQtDeployer</Name>
|
||||||
<Version>1.5.0.25</Version>
|
<Version>1.5.0.26</Version>
|
||||||
<Title>CQtDeployer</Title>
|
<Title>CQtDeployer</Title>
|
||||||
<Publisher>QuasarApp</Publisher>
|
<Publisher>QuasarApp</Publisher>
|
||||||
<StartMenuDir>CQtDeployer</StartMenuDir>
|
<StartMenuDir>CQtDeployer</StartMenuDir>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<Package>
|
<Package>
|
||||||
<DisplayName>CQtDeployer 1.5 Alpha</DisplayName>
|
<DisplayName>CQtDeployer 1.5 Alpha</DisplayName>
|
||||||
<Description>CQtDeployer 1.5 Alpha. Do not use this version because it is unstable and may lead to unwanted bugs or consequences. Use this version exclusively for testing new functionality.</Description>
|
<Description>CQtDeployer 1.5 Alpha. Do not use this version because it is unstable and may lead to unwanted bugs or consequences. Use this version exclusively for testing new functionality.</Description>
|
||||||
<Version>1.5.0.25</Version>
|
<Version>1.5.0.26</Version>
|
||||||
<Default>true</Default>
|
<Default>true</Default>
|
||||||
<ForcedInstallation>false</ForcedInstallation>
|
<ForcedInstallation>false</ForcedInstallation>
|
||||||
<Script>installscript.js</Script>
|
<Script>installscript.js</Script>
|
||||||
|
@ -38,6 +38,7 @@ SOURCES += tst_deploytest.cpp \
|
|||||||
modulesqt513.cpp \
|
modulesqt513.cpp \
|
||||||
modulesqt514.cpp \
|
modulesqt514.cpp \
|
||||||
modulesqt515.cpp \
|
modulesqt515.cpp \
|
||||||
|
modulesqt5152.cpp \
|
||||||
qmlcreator.cpp \
|
qmlcreator.cpp \
|
||||||
testutils.cpp
|
testutils.cpp
|
||||||
|
|
||||||
@ -51,6 +52,7 @@ HEADERS += \
|
|||||||
modulesqt513.h \
|
modulesqt513.h \
|
||||||
modulesqt514.h \
|
modulesqt514.h \
|
||||||
modulesqt515.h \
|
modulesqt515.h \
|
||||||
|
modulesqt5152.h \
|
||||||
qmlcreator.h \
|
qmlcreator.h \
|
||||||
testutils.h
|
testutils.h
|
||||||
|
|
||||||
|
@ -12,7 +12,11 @@
|
|||||||
#include <configparser.h>
|
#include <configparser.h>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2)
|
||||||
|
#include "modulesqt5152.h"
|
||||||
|
class Modules : public ModulesQt5152
|
||||||
|
|
||||||
|
#elif QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
|
||||||
#include "modulesqt515.h"
|
#include "modulesqt515.h"
|
||||||
class Modules : public ModulesQt515
|
class Modules : public ModulesQt515
|
||||||
|
|
||||||
|
@ -1312,7 +1312,10 @@ QSet<QString> ModulesQt513::qmlVirtualKeyBoadrLibs(const QString &distDir) const
|
|||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/Styles/qmldir",
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/Styles/qmldir",
|
||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/libqtquickvirtualkeyboardplugin.so",
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/libqtquickvirtualkeyboardplugin.so",
|
||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/plugins.qmltypes",
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/plugins.qmltypes",
|
||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/qmldir"
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/qmldir",
|
||||||
|
"./" + distDir + "/qml/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin.so",
|
||||||
|
"./" + distDir + "/qml/Qt/labs/folderlistmodel/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/Qt/labs/folderlistmodel/qmldir"
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
Tree += utils.createTree({
|
Tree += utils.createTree({
|
||||||
@ -1350,7 +1353,10 @@ QSet<QString> ModulesQt513::qmlVirtualKeyBoadrLibs(const QString &distDir) const
|
|||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/Styles/qtquickvirtualkeyboardstylesplugin.dll",
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/Styles/qtquickvirtualkeyboardstylesplugin.dll",
|
||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/plugins.qmltypes",
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/plugins.qmltypes",
|
||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/qmldir",
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/qmldir",
|
||||||
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/qtquickvirtualkeyboardplugin.dll"
|
"./" + distDir + "/qml/QtQuick/VirtualKeyboard/qtquickvirtualkeyboardplugin.dll",
|
||||||
|
"./" + distDir + "/qml/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll",
|
||||||
|
"./" + distDir + "/qml/Qt/labs/folderlistmodel/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/Qt/labs/folderlistmodel/qmldir"
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
return Tree;
|
return Tree;
|
||||||
|
@ -210,6 +210,7 @@ QSet<QString> ModulesQt515::testOutLibs(const QString &distDir) const {
|
|||||||
"./" + distDir + "/lolTr/qtdeclarative_tr.qm",
|
"./" + distDir + "/lolTr/qtdeclarative_tr.qm",
|
||||||
"./" + distDir + "/lolTr/qtbase_tr.qm",
|
"./" + distDir + "/lolTr/qtbase_tr.qm",
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
res += utils.createTree({
|
res += utils.createTree({
|
||||||
@ -235,6 +236,7 @@ QSet<QString> ModulesQt515::testOutLibs(const QString &distDir) const {
|
|||||||
"./" + distDir + "/q/QtQuick/Controls.2/designer/InsetSection.qml",
|
"./" + distDir + "/q/QtQuick/Controls.2/designer/InsetSection.qml",
|
||||||
"./" + distDir + "/lolTr/qtdeclarative_tr.qm",
|
"./" + distDir + "/lolTr/qtdeclarative_tr.qm",
|
||||||
"./" + distDir + "/lolTr/qtbase_tr.qm",
|
"./" + distDir + "/lolTr/qtbase_tr.qm",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
res -= utils.createTree({
|
res -= utils.createTree({
|
||||||
|
162
UnitTests/modulesqt5152.cpp
Normal file
162
UnitTests/modulesqt5152.cpp
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
#include "modulesqt5152.h"
|
||||||
|
|
||||||
|
ModulesQt5152::ModulesQt5152()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QSet<QString> ModulesQt5152::qmlLibs(const QString &distDir) const {
|
||||||
|
TestUtils utils;
|
||||||
|
|
||||||
|
auto res = ModulesQt515::qmlLibs(distDir);
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
res += utils.createTree({
|
||||||
|
"./" + distDir + "/qml/QtQml/WorkerScript.2/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/qmlplugin.dll",
|
||||||
|
"./" + distDir + "/qml/QtQml/RemoteObjects/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/RemoteObjects/qtqmlremoteobjects.dll",
|
||||||
|
"./" + distDir + "/qml/QtQml/StateMachine/qtqmlstatemachine.dll",
|
||||||
|
"./" + distDir + "/qml/QtQml/Models.2/modelsplugin.dll",
|
||||||
|
"./" + distDir + "/lib/Qt5RemoteObjects.dll",
|
||||||
|
"./" + distDir + "/qml/QtQml/Models.2/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/WorkerScript.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/RemoteObjects/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/Models.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/StateMachine/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/WorkerScript.2/workerscriptplugin.dll",
|
||||||
|
"./" + distDir + "/qml/QtQml/StateMachine/qmldir",
|
||||||
|
|
||||||
|
});
|
||||||
|
#else
|
||||||
|
res += utils.createTree({
|
||||||
|
"./" + distDir + "/qml/QtQml/WorkerScript.2/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/libqmlplugin.so",
|
||||||
|
"./" + distDir + "/qml/QtQml/RemoteObjects/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/RemoteObjects/libqtqmlremoteobjects.so",
|
||||||
|
"./" + distDir + "/qml/QtQml/StateMachine/libqtqmlstatemachine.so",
|
||||||
|
"./" + distDir + "/qml/QtQml/Models.2/libmodelsplugin.so",
|
||||||
|
"./" + distDir + "/lib/libQt5RemoteObjects.so",
|
||||||
|
"./" + distDir + "/qml/QtQml/Models.2/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/WorkerScript.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/RemoteObjects/qmldir",
|
||||||
|
"./" + distDir + "/qml/QtQml/Models.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/StateMachine/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/qml/QtQml/WorkerScript.2/libworkerscriptplugin.so",
|
||||||
|
"./" + distDir + "/qml/QtQml/StateMachine/qmldir",
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSet<QString> ModulesQt5152::testDistroLibs(const QString &distDir) const {
|
||||||
|
TestUtils utils;
|
||||||
|
|
||||||
|
auto res = ModulesQt515::testDistroLibs(distDir);
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
|
||||||
|
res += utils.createTree({
|
||||||
|
"./" + distDir + "/package2/ZzZ/Qt5RemoteObjects.dll",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/Models.2/modelsplugin.dll",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/Models.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/Models.2/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/RemoteObjects/qtqmlremoteobjects.dll",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/RemoteObjects/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/RemoteObjects/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/StateMachine/qtqmlstatemachine.dll",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/StateMachine/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/StateMachine/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/WorkerScript.2/workerscriptplugin.dll",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/WorkerScript.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/WorkerScript.2/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/qmlplugin.dll",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/qmldir",
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
#else
|
||||||
|
res += utils.createTree({
|
||||||
|
|
||||||
|
"./" + distDir + "/package2/ZzZ/lib/libQt5RemoteObjects.so",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/Models.2/libmodelsplugin.so",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/Models.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/Models.2/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/RemoteObjects/libqtqmlremoteobjects.so",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/RemoteObjects/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/RemoteObjects/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/StateMachine/libqtqmlstatemachine.so",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/StateMachine/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/StateMachine/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/WorkerScript.2/libworkerscriptplugin.so",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/WorkerScript.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/WorkerScript.2/qmldir",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/libqmlplugin.so",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/package2/ZzZ/q/and/q/QtQml/qmldir",
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSet<QString> ModulesQt5152::testOutLibs(const QString &distDir) const {
|
||||||
|
TestUtils utils;
|
||||||
|
|
||||||
|
auto res = ModulesQt515::testOutLibs(distDir);
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
res += utils.createTree({
|
||||||
|
"./" + distDir + "/lolLib/Qt5RemoteObjects.dll",
|
||||||
|
"./" + distDir + "/q/QtQml/Models.2/modelsplugin.dll",
|
||||||
|
"./" + distDir + "/q/QtQml/Models.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/Models.2/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/RemoteObjects/qtqmlremoteobjects.dll",
|
||||||
|
"./" + distDir + "/q/QtQml/RemoteObjects/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/RemoteObjects/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/StateMachine/qtqmlstatemachine.dll",
|
||||||
|
"./" + distDir + "/q/QtQml/StateMachine/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/StateMachine/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/WorkerScript.2/workerscriptplugin.dll",
|
||||||
|
"./" + distDir + "/q/QtQml/WorkerScript.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/WorkerScript.2/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/qmlplugin.dll",
|
||||||
|
"./" + distDir + "/q/QtQml/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/qmldir",
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
#else
|
||||||
|
res += utils.createTree({
|
||||||
|
"./" + distDir + "/lolLib/libQt5RemoteObjects.so",
|
||||||
|
"./" + distDir + "/q/QtQml/Models.2/libmodelsplugin.so",
|
||||||
|
"./" + distDir + "/q/QtQml/Models.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/Models.2/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/RemoteObjects/libqtqmlremoteobjects.so",
|
||||||
|
"./" + distDir + "/q/QtQml/RemoteObjects/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/RemoteObjects/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/StateMachine/libqtqmlstatemachine.so",
|
||||||
|
"./" + distDir + "/q/QtQml/StateMachine/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/StateMachine/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/WorkerScript.2/libworkerscriptplugin.so",
|
||||||
|
"./" + distDir + "/q/QtQml/WorkerScript.2/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/WorkerScript.2/qmldir",
|
||||||
|
"./" + distDir + "/q/QtQml/libqmlplugin.so",
|
||||||
|
"./" + distDir + "/q/QtQml/plugins.qmltypes",
|
||||||
|
"./" + distDir + "/q/QtQml/qmldir",
|
||||||
|
});
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return res;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
18
UnitTests/modulesqt5152.h
Normal file
18
UnitTests/modulesqt5152.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef MODULESQT5152_H
|
||||||
|
#define MODULESQT5152_H
|
||||||
|
|
||||||
|
#include "modulesqt515.h"
|
||||||
|
|
||||||
|
class ModulesQt5152: public ModulesQt515
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ModulesQt5152();
|
||||||
|
|
||||||
|
// ModulesQt513 interface
|
||||||
|
public:
|
||||||
|
QSet<QString> qmlLibs(const QString &distDir = DISTRO_DIR) const override;
|
||||||
|
QSet<QString> testDistroLibs(const QString &distDir = DISTRO_DIR) const override;
|
||||||
|
QSet<QString> testOutLibs(const QString &distDir = DISTRO_DIR) const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MODULESQT5152_H
|
@ -13,6 +13,7 @@
|
|||||||
<file alias="win64msvc.dll">testRes/win64/msvc/lib.dll</file>
|
<file alias="win64msvc.dll">testRes/win64/msvc/lib.dll</file>
|
||||||
<file alias="qmlFile.qml">testRes/qml/Scene</file>
|
<file alias="qmlFile.qml">testRes/qml/Scene</file>
|
||||||
<file alias="qmlFileQt6.qml">testRes/qml/SceneQt6</file>
|
<file alias="qmlFileQt6.qml">testRes/qml/SceneQt6</file>
|
||||||
|
<file alias="qmlDir">testRes/qml/qmldir</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/testResurces">
|
<qresource prefix="/testResurces">
|
||||||
<file>testRes/TestQMLWidgets.sh</file>
|
<file>testRes/TestQMLWidgets.sh</file>
|
||||||
|
10
UnitTests/testRes/qml/qmldir
Normal file
10
UnitTests/testRes/qml/qmldir
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
module QtQuick.VirtualKeyboard
|
||||||
|
plugin qtquickvirtualkeyboardplugin
|
||||||
|
classname QtQuickVirtualKeyboardPlugin
|
||||||
|
typeinfo plugins.qmltypes
|
||||||
|
depends QtQuick 2.0
|
||||||
|
depends QtQuick.Window 2.2
|
||||||
|
depends QtQuick.Layouts 1.0
|
||||||
|
depends Qt.labs.folderlistmodel 2.1
|
||||||
|
depends QtQuick.VirtualKeyboard.Settings 2.2
|
||||||
|
depends QtQuick.VirtualKeyboard.Styles 2.2
|
@ -920,7 +920,7 @@ void deploytest::testQmlScaner() {
|
|||||||
|
|
||||||
// qt5
|
// qt5
|
||||||
auto qmlRoot = QFileInfo(TestQtDir + "/qml").absoluteFilePath();
|
auto qmlRoot = QFileInfo(TestQtDir + "/qml").absoluteFilePath();
|
||||||
QML *scaner = new QML(qmlRoot);
|
QML *scaner = new QML(qmlRoot, QtMajorVersion::Qt5);
|
||||||
auto imports = scaner->extractImportsFromFile(":/qmlFile.qml");
|
auto imports = scaner->extractImportsFromFile(":/qmlFile.qml");
|
||||||
|
|
||||||
scaner->scanQmlTree(qmlRoot);
|
scaner->scanQmlTree(qmlRoot);
|
||||||
@ -940,6 +940,8 @@ void deploytest::testQmlScaner() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
scaner->setQtVersion(QtMajorVersion::Qt6);
|
||||||
|
|
||||||
// qt6
|
// qt6
|
||||||
|
|
||||||
results = {
|
results = {
|
||||||
@ -958,6 +960,57 @@ void deploytest::testQmlScaner() {
|
|||||||
QVERIFY(results.contains(path));
|
QVERIFY(results.contains(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
imports = scaner->extractImportsFromFile(":/qmlFile.qml");
|
||||||
|
|
||||||
|
QVERIFY(results.size() == imports.size());
|
||||||
|
|
||||||
|
for (const auto & import: qAsConst(imports)) {
|
||||||
|
auto path = scaner->getPathFromImport(import);
|
||||||
|
QVERIFY(results.contains(path));
|
||||||
|
}
|
||||||
|
|
||||||
|
// qt5
|
||||||
|
scaner->setQtVersion(QtMajorVersion::Qt5);
|
||||||
|
|
||||||
|
results = {
|
||||||
|
{qmlRoot + "/QtQuick.2/"},
|
||||||
|
{qmlRoot + "/QtQuick/Window.2/"},
|
||||||
|
{qmlRoot + "/QtQuick/Layouts/"},
|
||||||
|
{qmlRoot + "/Qt/labs/folderlistmodel/"},
|
||||||
|
{qmlRoot + "/QtQuick/VirtualKeyboard/Settings/"},
|
||||||
|
{qmlRoot + "/QtQuick/VirtualKeyboard/Styles/"},
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = scaner->extractImportsFromQmlModule(":/qmlDir");
|
||||||
|
|
||||||
|
QVERIFY(results.size() == imports.size());
|
||||||
|
|
||||||
|
for (const auto &import: qAsConst(imports)) {
|
||||||
|
auto path = scaner->getPathFromImport(import);
|
||||||
|
QVERIFY(results.contains(path));
|
||||||
|
}
|
||||||
|
|
||||||
|
// qt6
|
||||||
|
scaner->setQtVersion(QtMajorVersion::Qt6);
|
||||||
|
|
||||||
|
results = {
|
||||||
|
{qmlRoot + "/QtQuick"},
|
||||||
|
{qmlRoot + "/QtQuick/Window"},
|
||||||
|
{qmlRoot + "/QtQuick/Layouts"},
|
||||||
|
{qmlRoot + "/Qt/labs/folderlistmodel"},
|
||||||
|
{qmlRoot + "/QtQuick/VirtualKeyboard/Settings"},
|
||||||
|
{qmlRoot + "/QtQuick/VirtualKeyboard/Styles"},
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = scaner->extractImportsFromQmlModule(":/qmlDir");
|
||||||
|
|
||||||
|
QVERIFY(results.size() == imports.size());
|
||||||
|
|
||||||
|
for (const auto &import: qAsConst(imports)) {
|
||||||
|
auto path = scaner->getPathFromImport(import);
|
||||||
|
QVERIFY(results.contains(path));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void deploytest::testPrefix() {
|
void deploytest::testPrefix() {
|
||||||
@ -1316,7 +1369,7 @@ void deploytest::testQmlExtrct() {
|
|||||||
auto qmlFiles = creator.getCopyedQml();
|
auto qmlFiles = creator.getCopyedQml();
|
||||||
|
|
||||||
|
|
||||||
QML scaner("./");
|
QML scaner("./", QtMajorVersion::Qt5);
|
||||||
|
|
||||||
|
|
||||||
for (const auto &file : qAsConst(qmlFiles)) {
|
for (const auto &file : qAsConst(qmlFiles)) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=1.5.0.25
|
Version=1.5.0.26
|
||||||
Name=CQtDeployer
|
Name=CQtDeployer
|
||||||
Comment=CQtDeployer Help.
|
Comment=CQtDeployer Help.
|
||||||
Exec=cqtdeployer
|
Exec=cqtdeployer
|
||||||
@ -10,6 +10,6 @@ Categories=Application;
|
|||||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||||
X-GNOME-Bugzilla-Product=CQtDeployer
|
X-GNOME-Bugzilla-Product=CQtDeployer
|
||||||
X-GNOME-Bugzilla-Component=General
|
X-GNOME-Bugzilla-Component=General
|
||||||
X-GNOME-Bugzilla-Version=1.5.0.25
|
X-GNOME-Bugzilla-Version=1.5.0.26
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
Name[ru_RU]=CQtDeployer
|
Name[ru_RU]=CQtDeployer
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
name: cqtdeployer # you probably want to 'snapcraft register <name>'
|
name: cqtdeployer # you probably want to 'snapcraft register <name>'
|
||||||
version: '1.5.0.25' # just for humans, typically '1.2+git' or '1.3.2'
|
version: '1.5.0.26' # just for humans, typically '1.2+git' or '1.3.2'
|
||||||
summary: deploy your qt projects # 79 char long summary
|
summary: deploy your qt projects # 79 char long summary
|
||||||
description: |
|
description: |
|
||||||
Console app for deploy qt libs.
|
Console app for deploy qt libs.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user