mirror of
https://github.com/QuasarApp/CQtDeployer.git
synced 2025-05-19 12:59:35 +00:00
commit
c778ddd933
@ -22,6 +22,7 @@ android: DEFINES += WITHOUT_TESTS
|
|||||||
CQtDeployer \
|
CQtDeployer \
|
||||||
UnitTests \
|
UnitTests \
|
||||||
tests/TestOnlyC \
|
tests/TestOnlyC \
|
||||||
|
tests/TestCPPOnly \
|
||||||
tests/TestQtWidgets \
|
tests/TestQtWidgets \
|
||||||
tests/TestQMLWidgets \
|
tests/TestQMLWidgets \
|
||||||
tests/virtualkeyboard
|
tests/virtualkeyboard
|
||||||
@ -33,6 +34,7 @@ android: DEFINES += WITHOUT_TESTS
|
|||||||
contains(DEFINES, WITHOUT_TESTS) {
|
contains(DEFINES, WITHOUT_TESTS) {
|
||||||
SUBDIRS -= UnitTests \
|
SUBDIRS -= UnitTests \
|
||||||
tests/TestOnlyC \
|
tests/TestOnlyC \
|
||||||
|
tests/TestCPPOnly \
|
||||||
tests/TestQtWidgets \
|
tests/TestQtWidgets \
|
||||||
tests/TestQMLWidgets \
|
tests/TestQMLWidgets \
|
||||||
tests/quicknanobrowser \
|
tests/quicknanobrowser \
|
||||||
|
@ -22,7 +22,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
|
|
||||||
if (!QuasarAppUtils::Params::parseParams(argc, argv)) {
|
if (!QuasarAppUtils::Params::parseParams(argc, argv)) {
|
||||||
QuasarAppUtils::Params::log("wrong parametrs", QuasarAppUtils::Warning);
|
QuasarAppUtils::Params::log("Wrong parameters", QuasarAppUtils::Warning);
|
||||||
DeployCore::help();
|
DeployCore::help();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ TEMPLATE = lib
|
|||||||
|
|
||||||
DEFINES += DEPLOY_LIBRARY
|
DEFINES += DEPLOY_LIBRARY
|
||||||
|
|
||||||
VERSION = 1.5.0.31
|
VERSION = 1.5.0.34
|
||||||
|
|
||||||
DEFINES += APP_VERSION='\\"$$VERSION\\"'
|
DEFINES += APP_VERSION='\\"$$VERSION\\"'
|
||||||
|
|
||||||
|
@ -4,6 +4,5 @@ Maintainer: $PUBLISHER
|
|||||||
Version: $VERSION
|
Version: $VERSION
|
||||||
Homepage: $HOMEPAGE
|
Homepage: $HOMEPAGE
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Depends: libgl1-mesa-dev
|
|
||||||
Description: $DESCRIPTION
|
Description: $DESCRIPTION
|
||||||
|
|
||||||
|
@ -39,9 +39,10 @@ do
|
|||||||
DEST_FILE="/usr/share/applications/$app.desktop"
|
DEST_FILE="/usr/share/applications/$app.desktop"
|
||||||
createShortCut
|
createShortCut
|
||||||
|
|
||||||
ln -s "$TARGET_DIR/$app.sh" /usr/bin/"${app,,}"
|
if [ ! -e /usr/bin/"${app,,}" ]; then
|
||||||
|
ln -s "$TARGET_DIR/$app.sh" /usr/bin/"${app,,}"
|
||||||
echo "${app,,}"
|
echo "${app,,}"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,8 @@ do
|
|||||||
SRC_FILE="$TARGET_DIR/$app.sh"
|
SRC_FILE="$TARGET_DIR/$app.sh"
|
||||||
rm "/usr/share/applications/$app.desktop"
|
rm "/usr/share/applications/$app.desktop"
|
||||||
|
|
||||||
rm /usr/bin/"${app,,}"
|
if [ -e /usr/bin/"${app,,}" ]; then
|
||||||
|
rm /usr/bin/"${app,,}"
|
||||||
echo "Remove ${app,,}"
|
echo "Remove ${app,,}"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
@ -2,26 +2,18 @@ function Component() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function extractFileName(path) {
|
|
||||||
const fullName = path.substring(path.lastIndexOf('/') + 1);
|
|
||||||
|
|
||||||
const index = fullName.lastIndexOf('.');
|
|
||||||
if (index >= 0) {
|
|
||||||
return fullName.substring(0, index)
|
|
||||||
}
|
|
||||||
|
|
||||||
return fullName;
|
|
||||||
}
|
|
||||||
|
|
||||||
function generateShortCutCmd(cmd) {
|
function generateShortCutCmd(cmd) {
|
||||||
|
|
||||||
|
var prefix = "$PREFIX";
|
||||||
|
|
||||||
if (systemInfo.kernelType === "winnt") {
|
if (systemInfo.kernelType === "winnt") {
|
||||||
|
|
||||||
console.log("create icons!!! on Windows");
|
console.log("create icons!!! on Windows");
|
||||||
|
|
||||||
component.addOperation(
|
component.addOperation(
|
||||||
"CreateShortcut",
|
"CreateShortcut",
|
||||||
"@TargetDir@/" + cmd + ".bat",
|
"@TargetDir@/" + prefix + "/" + cmd + ".bat",
|
||||||
"@DesktopDir@/" + extractFileName(cmd) + ".lnk",
|
"@DesktopDir@/" + cmd + ".lnk",
|
||||||
"iconPath=@TargetDir@/$ICON",
|
"iconPath=@TargetDir@/$ICON",
|
||||||
"iconId=0");
|
"iconId=0");
|
||||||
|
|
||||||
@ -30,16 +22,15 @@ function generateShortCutCmd(cmd) {
|
|||||||
|
|
||||||
if (systemInfo.kernelType === "linux") {
|
if (systemInfo.kernelType === "linux") {
|
||||||
console.log("create icons!!! on LINUX");
|
console.log("create icons!!! on LINUX");
|
||||||
const name = extractFileName(cmd);
|
|
||||||
component.addOperation("CreateDesktopEntry",
|
component.addOperation("CreateDesktopEntry",
|
||||||
"@HomeDir@/.local/share/applications/" + name + ".desktop",
|
"@HomeDir@/.local/share/applications/" + cmd + ".desktop",
|
||||||
"Version=@Version@\n
|
"Version=@Version@\n
|
||||||
Type=Application\n
|
Type=Application\n
|
||||||
Terminal=false\n
|
Terminal=false\n
|
||||||
Exec=\"@TargetDir@/" + cmd + ".sh\"\n
|
Exec=\"@TargetDir@/" + prefix + "/" + cmd + ".sh\"\n
|
||||||
Name=" + name + "\n
|
Name=" + cmd + "\n
|
||||||
Icon=@TargetDir@/$ICON\n
|
Icon=@TargetDir@/$ICON\n
|
||||||
Name[en_US]=" + name);
|
Name[en_US]=" + cmd);
|
||||||
|
|
||||||
console.log("create icons!!! on LINUX done");
|
console.log("create icons!!! on LINUX done");
|
||||||
}
|
}
|
||||||
@ -49,7 +40,7 @@ Component.prototype.createOperations = function() {
|
|||||||
// call default implementation to actually install README.txt!
|
// call default implementation to actually install README.txt!
|
||||||
component.createOperations();
|
component.createOperations();
|
||||||
|
|
||||||
const cmdArray = ["array", "of", "cmds"]; // will be changed in cqtdeployer
|
var cmdArray = ["array", "of", "cmds"]; // will be changed in cqtdeployer
|
||||||
|
|
||||||
cmdArray.forEach( function (item){
|
cmdArray.forEach( function (item){
|
||||||
generateShortCutCmd(item);
|
generateShortCutCmd(item);
|
||||||
|
@ -25,7 +25,7 @@ bool Deb::deployTemplate(PackageControl &pkg) {
|
|||||||
QHash<QString, QString> pakcagesTemplates;
|
QHash<QString, QString> pakcagesTemplates;
|
||||||
|
|
||||||
if (!customTemplate.isEmpty()) {
|
if (!customTemplate.isEmpty()) {
|
||||||
QuasarAppUtils::Params::log("Using custom template for installer: " + customTemplate,
|
QuasarAppUtils::Params::log("Using custom template for debian pacakge: " + customTemplate,
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
|
|
||||||
auto availablePacakages = QDir(customTemplate).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
|
auto availablePacakages = QDir(customTemplate).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
|
||||||
@ -57,10 +57,10 @@ bool Deb::deployTemplate(PackageControl &pkg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!QFile::setPermissions(local + "/DEBIAN", static_cast<QFile::Permission>(0x7775))) {
|
if (!QFile::setPermissions(local + "/DEBIAN", static_cast<QFile::Permission>(0x7775))) {
|
||||||
QuasarAppUtils::Params::log("permishens set fail", QuasarAppUtils::Warning);
|
QuasarAppUtils::Params::log("Failed to set permissions", QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
outFiles.push_back(info.Name + ".deb");
|
outFiles.push_back(DeployCore::_config->getTargetDir() + "/" + info.Name + ".deb");
|
||||||
packageFolders.push_back(local);
|
packageFolders.push_back(local);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ bool Deb::cb() const {
|
|||||||
QString to = cfg->getTargetDir() + "/" + getLocation() + "/../";
|
QString to = cfg->getTargetDir() + "/" + getLocation() + "/../";
|
||||||
auto const outputFiles = outPutFiles();
|
auto const outputFiles = outPutFiles();
|
||||||
for (const QString& file : outputFiles) {
|
for (const QString& file : outputFiles) {
|
||||||
if(!moveData(from + file, to, "")) {
|
if(!moveData(from + PathUtils::getName(file), to, "")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,9 +164,9 @@ QString Deb::releativeLocation(const DistroModule &module) const {
|
|||||||
if (!module.prefix().isEmpty())
|
if (!module.prefix().isEmpty())
|
||||||
return module.prefix();
|
return module.prefix();
|
||||||
|
|
||||||
|
auto name = getName(module);
|
||||||
if (!module.name().isEmpty())
|
if (!name.isEmpty())
|
||||||
return module.name();
|
return name;
|
||||||
|
|
||||||
return module.key();
|
return module.key();
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "pathutils.h"
|
#include "pathutils.h"
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
#include <QTextCodec>
|
||||||
#include <deployconfig.h>
|
#include <deployconfig.h>
|
||||||
#include <distromodule.h>
|
#include <distromodule.h>
|
||||||
#include <quasarapp.h>
|
#include <quasarapp.h>
|
||||||
@ -47,8 +48,8 @@ bool iDistribution::unpackFile(const QFileInfo &resource,
|
|||||||
|
|
||||||
QByteArray inputData = file.readAll();
|
QByteArray inputData = file.readAll();
|
||||||
file.close();
|
file.close();
|
||||||
if (!QDir().mkpath(target)) {
|
if (!_fileManager->initDir(target)) {
|
||||||
QuasarAppUtils::Params::log(QString("impossible to create path : %0 ").arg(target),
|
QuasarAppUtils::Params::log(QString("Failed to create path : %0 ").arg(target),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -56,7 +57,8 @@ bool iDistribution::unpackFile(const QFileInfo &resource,
|
|||||||
|
|
||||||
file.setFileName(target + "/" + resource.fileName());
|
file.setFileName(target + "/" + resource.fileName());
|
||||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
||||||
QuasarAppUtils::Params::log(QString("impossible to write in file: %0 ").arg(file.fileName()),
|
QuasarAppUtils::Params::log(QString("Failed to open file for writing: %0. %1").arg(file.fileName(),
|
||||||
|
file.errorString()),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -79,6 +81,7 @@ bool iDistribution::unpackFile(const QFileInfo &resource,
|
|||||||
}
|
}
|
||||||
|
|
||||||
QTextStream stream(&file);
|
QTextStream stream(&file);
|
||||||
|
stream.setCodec(QTextCodec::codecForName("UTF-8"));
|
||||||
stream << inputText;
|
stream << inputText;
|
||||||
} else {
|
} else {
|
||||||
file.write(inputData);
|
file.write(inputData);
|
||||||
@ -202,8 +205,8 @@ bool iDistribution::collectInfo(const DistroModule& pkg,
|
|||||||
cmdArray += ",";
|
cmdArray += ",";
|
||||||
bashArray += " ";
|
bashArray += " ";
|
||||||
}
|
}
|
||||||
cmdArray += "\"" + releativeLocation(pkg) + "/" + fileinfo.baseName() + "\"";
|
cmdArray += "\"" + fileinfo.baseName() + "\"";
|
||||||
bashArray += fileinfo.baseName();
|
bashArray += "\"" + fileinfo.baseName() + "\"";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmdArray += "]";
|
cmdArray += "]";
|
||||||
@ -244,6 +247,10 @@ bool iDistribution::deployIcon(TemplateInfo &info, const DistroModule& pkg) {
|
|||||||
QSet<QString> icons;
|
QSet<QString> icons;
|
||||||
for (const auto& target: pkg.targets()) {
|
for (const auto& target: pkg.targets()) {
|
||||||
auto icon = cfg->targets().value(target).getIcon();
|
auto icon = cfg->targets().value(target).getIcon();
|
||||||
|
|
||||||
|
QuasarAppUtils::Params::log(QString("%0: %1").arg(target, icon),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
|
|
||||||
if (icons.contains(icon))
|
if (icons.contains(icon))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -251,7 +258,7 @@ bool iDistribution::deployIcon(TemplateInfo &info, const DistroModule& pkg) {
|
|||||||
info.Icon = releativeLocation(pkg) + "/icons/" + iconInfo.fileName();
|
info.Icon = releativeLocation(pkg) + "/icons/" + iconInfo.fileName();
|
||||||
if (!copyFile(icon, localData + "/icons/", false)) {
|
if (!copyFile(icon, localData + "/icons/", false)) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log(QString("fail to copy icon: %0 ").arg(icon),
|
QuasarAppUtils::Params::log(QString("Failed to copy icon: %0.").arg(icon),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -278,5 +285,3 @@ QString iDistribution::releativeLocation(const DistroModule &module) const {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,15 +39,13 @@ Envirement QIF::toolKitEnv() const {
|
|||||||
|
|
||||||
result.addEnv(QProcessEnvironment::systemEnvironment().value("PATH"));
|
result.addEnv(QProcessEnvironment::systemEnvironment().value("PATH"));
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString AppPath = QuasarAppUtils::Params::getCurrentExecutableDir();
|
||||||
|
result.addEnv(AppPath);
|
||||||
|
|
||||||
// SNAP
|
// SNAP
|
||||||
|
|
||||||
QString AppPath = QuasarAppUtils::Params::getArg("appPath", "");
|
|
||||||
result.addEnv(AppPath + "/../QIF/");
|
result.addEnv(AppPath + "/../QIF/");
|
||||||
|
|
||||||
//Installer
|
//Installer
|
||||||
@ -87,7 +85,7 @@ QList<SystemCommandData> QIF::runCmd() {
|
|||||||
bool QIF::deployTemplate(PackageControl &pkg) {
|
bool QIF::deployTemplate(PackageControl &pkg) {
|
||||||
if (!initDefaultConfiguratuin()) {
|
if (!initDefaultConfiguratuin()) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("Fail to init rhe default configuration of the qif installer.",
|
QuasarAppUtils::Params::log("Failed to init the default configuration of qif installer.",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -291,4 +289,3 @@ bool QIF::initDefaultConfiguratuin() {
|
|||||||
// init default configuration
|
// init default configuration
|
||||||
return collectInfo(DistroModule{cfg->getDefaultPackage()}, generalInfo);
|
return collectInfo(DistroModule{cfg->getDefaultPackage()}, generalInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,13 +75,16 @@ void parseTargetPrivate(DeployConfig& conf,
|
|||||||
auto pair = iconPair.split(DeployCore::getSeparator(1), splitbehavior);
|
auto pair = iconPair.split(DeployCore::getSeparator(1), splitbehavior);
|
||||||
|
|
||||||
if (pair.size() == 1) {
|
if (pair.size() == 1) {
|
||||||
|
QuasarAppUtils::Params::log(QString("Set new default icon for all tagets: " + pair.value(0)),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
for (auto& editableTarget: cointainer) {
|
for (auto& editableTarget: cointainer) {
|
||||||
(editableTarget.*adder)(pair.value(0));
|
(editableTarget.*adder)(pair.value(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto targetsMap = conf.getTargetsListByFilter(pair.value(0));
|
const auto targetsMap = conf.getTargetsListByFilter(pair.value(0));
|
||||||
|
|
||||||
if (pair.value(0).isEmpty() || targetsMap.isEmpty()) {
|
if (pair.value(0).isEmpty() || targetsMap.isEmpty()) {
|
||||||
|
|
||||||
@ -92,8 +95,12 @@ void parseTargetPrivate(DeployConfig& conf,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto editableTarget = targetsMap.begin().value();
|
for (const auto &target: targetsMap) {
|
||||||
(editableTarget->*adder)(pair.value(1));
|
QuasarAppUtils::Params::log(QString("Set new icon for %0 taget. Icon: %1").
|
||||||
|
arg(pair.value(0), pair.value(1)),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
|
(target->*adder)(pair.value(1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,13 +111,13 @@ bool ConfigParser::parseParams() {
|
|||||||
QuasarAppUtils::Params::isEndable("confFile");
|
QuasarAppUtils::Params::isEndable("confFile");
|
||||||
|
|
||||||
if (path.isEmpty() &&
|
if (path.isEmpty() &&
|
||||||
QuasarAppUtils::Params::customParamasSize() <= 0) {
|
QuasarAppUtils::Params::size() <= 0) {
|
||||||
path = DEFAULT_COFIGURATION_FILE;
|
path = DEFAULT_COFIGURATION_FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (QFile::exists(path)) {
|
if (QFile::exists(path)) {
|
||||||
if (!loadFromFile(path)) {
|
if (!loadFromFile(path)) {
|
||||||
QuasarAppUtils::Params::log("failed to parse " + path,
|
QuasarAppUtils::Params::log("Failed to parse json file : " + path,
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -125,18 +132,18 @@ bool ConfigParser::parseParams() {
|
|||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
|
|
||||||
if (!parseInfoMode()) {
|
if (!parseInfoMode()) {
|
||||||
QuasarAppUtils::Params::log("show info is failed!",
|
QuasarAppUtils::Params::log("Show info is failed!",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RunMode::Clear: {
|
case RunMode::Clear: {
|
||||||
QuasarAppUtils::Params::log("clear ...",
|
QuasarAppUtils::Params::log("Clear ...",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
|
|
||||||
if (!parseClearMode()) {
|
if (!parseClearMode()) {
|
||||||
QuasarAppUtils::Params::log("clear is failed!",
|
QuasarAppUtils::Params::log("Clear failed!",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -159,7 +166,7 @@ bool ConfigParser::parseParams() {
|
|||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
|
|
||||||
if (!parseDeployMode()) {
|
if (!parseDeployMode()) {
|
||||||
QuasarAppUtils::Params::log("deploy is failed!",
|
QuasarAppUtils::Params::log("Deploy failed!",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -185,7 +192,7 @@ bool ConfigParser::parseParams() {
|
|||||||
DeployCore::_config = &_config;
|
DeployCore::_config = &_config;
|
||||||
|
|
||||||
if (createFile && !createFromDeploy(path)) {
|
if (createFile && !createFromDeploy(path)) {
|
||||||
QuasarAppUtils::Params::log("Do not create a deploy config file in " + path,
|
QuasarAppUtils::Params::log("Failed to create a deploy config file in " + path,
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -548,7 +555,7 @@ bool ConfigParser::initPackages() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
QuasarAppUtils::Params::log(
|
QuasarAppUtils::Params::log(
|
||||||
"Set Default Package to " + defaultPackage,
|
"The default package is " + defaultPackage,
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,7 +595,7 @@ bool ConfigParser::initRunScripts() {
|
|||||||
QFileInfo script(pair.value(1));
|
QFileInfo script(pair.value(1));
|
||||||
|
|
||||||
if (!script.isFile()) {
|
if (!script.isFile()) {
|
||||||
QuasarAppUtils::Params::log(QString("The %0 is not exits.").arg(script.absoluteFilePath()),
|
QuasarAppUtils::Params::log(QString("The %0 file does not exist.").arg(script.absoluteFilePath()),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -617,19 +624,21 @@ bool ConfigParser::initQmlInput() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigParser::packagesErrorLog(const QString &flag) {
|
void ConfigParser::packagesErrorLog(const QString &option) {
|
||||||
QuasarAppUtils::Params::log(QString("Set %0 fail, because you try set %0 for not inited package."
|
QuasarAppUtils::Params::log(QString("Failed to set the %0 option, because you are trying to set it for an uninitialized package."
|
||||||
" Use 'targetPackage' flag for init the packages. "
|
" Use the 'targetPackage' flag to init this package. "
|
||||||
"Or if you want to configure emty package use the allowEmptyPackages option for disable this error message.").arg(flag),
|
"Or, if you want to configure an empty package, "
|
||||||
|
"use the allowEmptyPackages option to disable this error message.").
|
||||||
|
arg(option),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConfigParser::parseDeployMode() {
|
bool ConfigParser::parseDeployMode() {
|
||||||
|
|
||||||
if (QuasarAppUtils::Params::isEndable("deploySystem-with-libc")) {
|
if (QuasarAppUtils::Params::isEndable("deploySystem-with-libc")) {
|
||||||
QuasarAppUtils::Params::log("You use depcricated option \"deploySystem-with-libc\"."
|
QuasarAppUtils::Params::log("You are using a deprecated option \"deploySystem-with-libc\"."
|
||||||
" In this version this option is no different from \"deploySystem\"."
|
" In this version this option is no different from \"deploySystem\"."
|
||||||
" Please use the deploySystem option.");
|
" Please use the deploySystem option.", QuasarAppUtils::Warning);
|
||||||
QuasarAppUtils::Params::setEnable("deploySystem", true );
|
QuasarAppUtils::Params::setEnable("deploySystem", true );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -644,7 +653,7 @@ bool ConfigParser::parseDeployMode() {
|
|||||||
|
|
||||||
if (bin.size() && !setTargets(bin)) {
|
if (bin.size() && !setTargets(bin)) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("Sets input targets is failed!",
|
QuasarAppUtils::Params::log("Failed to set targets",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -653,7 +662,7 @@ bool ConfigParser::parseDeployMode() {
|
|||||||
|
|
||||||
|
|
||||||
if (!(_config.targets().count() || xData.count())) {
|
if (!(_config.targets().count() || xData.count())) {
|
||||||
QuasarAppUtils::Params::log("The targets initialize is failed!",
|
QuasarAppUtils::Params::log("Failed to initialize targets or extra data!",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("Use bin or extraData optins. And check input pathes.",
|
QuasarAppUtils::Params::log("Use bin or extraData optins. And check input pathes.",
|
||||||
@ -668,7 +677,8 @@ bool ConfigParser::parseDeployMode() {
|
|||||||
_config.depchLimit = QuasarAppUtils::Params::getArg("recursiveDepth").toInt(&ok);
|
_config.depchLimit = QuasarAppUtils::Params::getArg("recursiveDepth").toInt(&ok);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
_config.depchLimit = 0;
|
_config.depchLimit = 0;
|
||||||
QuasarAppUtils::Params::log("recursiveDepth is invalid! use default value 0",
|
QuasarAppUtils::Params::log("Failed to set the recursive depth. The argument of the recursiveDepth option is invalid!"
|
||||||
|
" Using the default value 0",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -693,11 +703,12 @@ bool ConfigParser::parseDeployMode() {
|
|||||||
|
|
||||||
if (DeployCore::isSnap()) {
|
if (DeployCore::isSnap()) {
|
||||||
QuasarAppUtils::Params::log("If you are using qmake from the system repository,"
|
QuasarAppUtils::Params::log("If you are using qmake from the system repository,"
|
||||||
" then you should use the classic version of the CQtDeployer instead of the snap version."
|
" then you must use the classic version of CQtDeployer instead of the snap version."
|
||||||
" This is due to the fact that the snap version runs in an isolated container and has limited access"
|
" This is due to the fact that the snap version"
|
||||||
|
" runs in an isolated container and has limited access"
|
||||||
" to system utilities and the environment. "
|
" to system utilities and the environment. "
|
||||||
"For get the classic version of cqtdeployer use the cqtdeployer installer "
|
"For get the classic version of cqtdeployer use the cqtdeployer installer "
|
||||||
"https://github.com/QuasarApp/CQtDeployer/releases");
|
"https://github.com/QuasarApp/CQtDeployer/releases", QuasarAppUtils::Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -787,7 +798,8 @@ void ConfigParser::setTargetDir(const QString &target) {
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
_config.setTargetDir(QFileInfo("./" + DISTRO_DIR).absoluteFilePath());
|
_config.setTargetDir(QFileInfo("./" + DISTRO_DIR).absoluteFilePath());
|
||||||
QuasarAppUtils::Params::log("flag targetDir not used. use default target dir :" + _config.getTargetDir(),
|
QuasarAppUtils::Params::log("The targetDir option is not used."
|
||||||
|
" CQtDeployer will use default target dir :" + _config.getTargetDir(),
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -813,14 +825,14 @@ bool ConfigParser::setTargets(const QStringList &value) {
|
|||||||
}
|
}
|
||||||
else if (targetInfo.isDir()) {
|
else if (targetInfo.isDir()) {
|
||||||
if (!setTargetsInDir(targetInfo.absoluteFilePath())) {
|
if (!setTargetsInDir(targetInfo.absoluteFilePath())) {
|
||||||
QuasarAppUtils::Params::log(i + " du not contains executable binaries!",
|
QuasarAppUtils::Params::log(i + " does not contain executable binaries!",
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
isfillList = true;
|
isfillList = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
QuasarAppUtils::Params::log(targetInfo.absoluteFilePath() + " not exits!",
|
QuasarAppUtils::Params::log(targetInfo.absoluteFilePath() + " does not exist!",
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -849,7 +861,7 @@ QFileInfo ConfigParser::getBinInfo(const QString &bin) {
|
|||||||
bool ConfigParser::setTargetsRecursive(const QString &dir) {
|
bool ConfigParser::setTargetsRecursive(const QString &dir) {
|
||||||
if (!setTargetsInDir(dir, true)) {
|
if (!setTargetsInDir(dir, true)) {
|
||||||
QuasarAppUtils::Params::log("setTargetsInDir failed!",
|
QuasarAppUtils::Params::log("setTargetsInDir failed!",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Debug);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1064,16 +1076,17 @@ bool ConfigParser::initQmakePrivate(const QString &qmake) {
|
|||||||
QDir dir(basePath);
|
QDir dir(basePath);
|
||||||
|
|
||||||
if (!dir.cdUp()) {
|
if (!dir.cdUp()) {
|
||||||
QuasarAppUtils::Params::log("fail init qmake",
|
QuasarAppUtils::Params::log("Failed to initialize qt directories by qmake.",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("exec qmake fail!, try init qtDir from path:" + dir.absolutePath(),
|
QuasarAppUtils::Params::log("Failed to execute the qmake process!"
|
||||||
|
" Trying to initialize Qt directories from path: " + dir.absolutePath(),
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
|
|
||||||
if (!setQtDir(dir.absolutePath())){
|
if (!setQtDir(dir.absolutePath())){
|
||||||
QuasarAppUtils::Params::log("fail init qmake",
|
QuasarAppUtils::Params::log("Failed to initialize Qt directories",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1087,8 +1100,8 @@ bool ConfigParser::initQmake() {
|
|||||||
|
|
||||||
|
|
||||||
if (!_config.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++ libraries because"
|
||||||
" for the distribution",
|
" all target applications do not depend on the Qt libraries",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1107,8 +1120,9 @@ bool ConfigParser::initQmake() {
|
|||||||
auto env = QProcessEnvironment::systemEnvironment();
|
auto env = QProcessEnvironment::systemEnvironment();
|
||||||
auto proc = DeployCore::findProcess(env.value("PATH"), "qmake");
|
auto proc = DeployCore::findProcess(env.value("PATH"), "qmake");
|
||||||
if (proc.isEmpty()) {
|
if (proc.isEmpty()) {
|
||||||
QuasarAppUtils::Params::log("The deployment target requires Qt libs, but init qmake is failed."
|
QuasarAppUtils::Params::log("The deployment target requires Qt libraries,"
|
||||||
"Use the qmake option for set a path to qmake.",
|
" but initialize of Qt directories is failed."
|
||||||
|
" Please use the qmake option to set a path to the qmake executable.",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1116,8 +1130,10 @@ bool ConfigParser::initQmake() {
|
|||||||
return initQmakePrivate(proc);
|
return initQmakePrivate(proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("You Application requires Qt libs but qmake cannot be found in option 'qmake' or PATH."
|
QuasarAppUtils::Params::log("Your distribution required Qt libraries "
|
||||||
"You use option noCheckPATH. Disable the option noCheckPATH from your deploy command for search qmake from PATH",
|
"but qmake executable cannot be found in the 'qmake' option or RPATH. "
|
||||||
|
"You are using the option noCheckPATH, "
|
||||||
|
"please remove this option from your deploy command to search qmake in PATH",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -1125,8 +1141,9 @@ bool ConfigParser::initQmake() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (qtList.size() > 1) {
|
if (qtList.size() > 1) {
|
||||||
QuasarAppUtils::Params::log("Your deployment targets were compiled by different qmake,"
|
QuasarAppUtils::Params::log("Your deployment targets were compiled by different qmakes, "
|
||||||
"qt auto-capture is not possible. Use the -qmake flag to solve this problem.",
|
"auto-capture of the Qt libraries is not possible. "
|
||||||
|
"Please use the -qmake flag to solve this problem.",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1207,32 +1224,32 @@ bool ConfigParser::setQtDir(const QString &value) {
|
|||||||
QFileInfo info(value);
|
QFileInfo info(value);
|
||||||
|
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/bin"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/bin"))) {
|
||||||
QuasarAppUtils::Params::log("get qt bin fail!");
|
QuasarAppUtils::Params::log("get qt bin failed!", QuasarAppUtils::Debug);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
_config.qtDir.setBins(info.absoluteFilePath() + ("/bin"));
|
_config.qtDir.setBins(info.absoluteFilePath() + ("/bin"));
|
||||||
|
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/lib"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/lib"))) {
|
||||||
QuasarAppUtils::Params::log("get qt lib fail!");
|
QuasarAppUtils::Params::log("get qt lib failed!", QuasarAppUtils::Debug);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
_config.qtDir.setLibs(info.absoluteFilePath() + ("/lib"));
|
_config.qtDir.setLibs(info.absoluteFilePath() + ("/lib"));
|
||||||
|
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/qml"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/qml"))) {
|
||||||
QuasarAppUtils::Params::log("get qt qml fail!");
|
QuasarAppUtils::Params::log("get qt qml failed!", QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
_config.qtDir.setQmls(info.absoluteFilePath() + ("/qml"));
|
_config.qtDir.setQmls(info.absoluteFilePath() + ("/qml"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/plugins"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/plugins"))) {
|
||||||
QuasarAppUtils::Params::log("get qt plugins fail!");
|
QuasarAppUtils::Params::log("get qt plugins failed!", QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
_config.qtDir.setPlugins(info.absoluteFilePath() + ("/plugins"));
|
_config.qtDir.setPlugins(info.absoluteFilePath() + ("/plugins"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/libexec"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/libexec"))) {
|
||||||
QuasarAppUtils::Params::log("get qt libexec fail!");
|
QuasarAppUtils::Params::log("get qt libexec failed!", QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
_config.qtDir.setLibexecs(info.absoluteFilePath() + ("/libexec"));
|
_config.qtDir.setLibexecs(info.absoluteFilePath() + ("/libexec"));
|
||||||
}
|
}
|
||||||
@ -1242,13 +1259,13 @@ bool ConfigParser::setQtDir(const QString &value) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/translations"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/translations"))) {
|
||||||
QuasarAppUtils::Params::log("get qt translations fail!");
|
QuasarAppUtils::Params::log("get qt translations failed!", QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
_config.qtDir.setTranslations(info.absoluteFilePath() + ("/translations"));
|
_config.qtDir.setTranslations(info.absoluteFilePath() + ("/translations"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!QFile::exists(info.absoluteFilePath() + ("/resources"))) {
|
if (!QFile::exists(info.absoluteFilePath() + ("/resources"))) {
|
||||||
QuasarAppUtils::Params::log("get qt resources fail!");
|
QuasarAppUtils::Params::log("get qt resources failed!", QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
_config.qtDir.setResources(info.absoluteFilePath() + ("/resources"));
|
_config.qtDir.setResources(info.absoluteFilePath() + ("/resources"));
|
||||||
}
|
}
|
||||||
@ -1278,8 +1295,8 @@ void ConfigParser::initExtraPath() {
|
|||||||
QFileInfo info(DeployCore::transportPathToSnapRoot(i));
|
QFileInfo info(DeployCore::transportPathToSnapRoot(i));
|
||||||
if (info.isDir()) {
|
if (info.isDir()) {
|
||||||
if (_config.targets().contains(info.absoluteFilePath())) {
|
if (_config.targets().contains(info.absoluteFilePath())) {
|
||||||
QuasarAppUtils::Params::log("skip the extra lib path because it is target!",
|
QuasarAppUtils::Params::log("Skip the extra library path because it is target!",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Debug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1292,12 +1309,12 @@ void ConfigParser::initExtraPath() {
|
|||||||
|
|
||||||
_config.extraPaths.addExtraPathsMasks({i});
|
_config.extraPaths.addExtraPathsMasks({i});
|
||||||
|
|
||||||
QuasarAppUtils::Params::log(i + " added like a path mask",
|
QuasarAppUtils::Params::log(i + " is added as a path mask",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
QuasarAppUtils::Params::log(i + " not added in path mask because"
|
QuasarAppUtils::Params::log(i + " not added in path mask because"
|
||||||
" the path mask must be large 2 characters",
|
" the path mask must be large 2 characters",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Debug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1309,12 +1326,12 @@ void ConfigParser::initExtraNames() {
|
|||||||
if (i.size() > 1) {
|
if (i.size() > 1) {
|
||||||
_config.allowedPaths.addtExtraNamesMasks({i});
|
_config.allowedPaths.addtExtraNamesMasks({i});
|
||||||
|
|
||||||
QuasarAppUtils::Params::log(i + " added like a file name mask",
|
QuasarAppUtils::Params::log(i + " is added as a filename mask",
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
QuasarAppUtils::Params::log(i + " not added in file mask because"
|
QuasarAppUtils::Params::log(i + " not added in file mask because"
|
||||||
" the file mask must be large 2 characters",
|
" the file mask must be large 2 characters",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Debug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -1439,7 +1456,7 @@ void ConfigParser::initEnvirement() {
|
|||||||
_config.envirement.addEnv(dirs);
|
_config.envirement.addEnv(dirs);
|
||||||
|
|
||||||
if (_config.envirement.size() < 2) {
|
if (_config.envirement.size() < 2) {
|
||||||
QuasarAppUtils::Params::log("system environment is empty",
|
QuasarAppUtils::Params::log("System environment is empty",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1457,7 +1474,7 @@ bool ConfigParser::checkSnapPermisions() {
|
|||||||
|
|
||||||
QuasarAppUtils::Params::log("You use a deploySystem or extraLibs options,"
|
QuasarAppUtils::Params::log("You use a deploySystem or extraLibs options,"
|
||||||
" but not added permision system-backup for cqtdeployer."
|
" but not added permision system-backup for cqtdeployer."
|
||||||
" Please add permision system-backup befor usong cqtdeployer."
|
" Please add permissions system-backup before using cqtdeployer."
|
||||||
" Add system-backup permision from console: ",
|
" Add system-backup permision from console: ",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
|
|
||||||
@ -1503,6 +1520,9 @@ bool ConfigParser::smartMoveTargets() {
|
|||||||
|
|
||||||
QMultiHash<QString, TargetInfo> temp;
|
QMultiHash<QString, TargetInfo> temp;
|
||||||
bool result = true;
|
bool result = true;
|
||||||
|
|
||||||
|
QuasarAppUtils::Params::log(QString("Available Targets: "),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
for (auto i = _config.targets().cbegin(); i != _config.targets().cend(); ++i) {
|
for (auto i = _config.targets().cbegin(); i != _config.targets().cend(); ++i) {
|
||||||
|
|
||||||
if (!i.value().isValid()) {
|
if (!i.value().isValid()) {
|
||||||
@ -1521,10 +1541,27 @@ bool ConfigParser::smartMoveTargets() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto newTargetKey = targetPath + "/" + target.fileName();
|
auto newTargetKey = targetPath + "/" + target.fileName();
|
||||||
temp.unite(moveTarget(i.value(), newTargetKey));
|
|
||||||
|
const auto newTarget = moveTarget(i.value(), newTargetKey);
|
||||||
|
temp.unite(newTarget);
|
||||||
|
QuasarAppUtils::Params::log(QString("Target: " + newTarget.begin().key()),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
|
|
||||||
auto pkgKey = i.value().getPackage();
|
auto pkgKey = i.value().getPackage();
|
||||||
valueLink(_config.packagesEdit(), pkgKey, DistroModule{pkgKey}).addTarget(newTargetKey);
|
if (!_config.packagesEdit().contains(pkgKey)) {
|
||||||
|
|
||||||
|
QuasarAppUtils::Params::log(QString("The target %0 belongs to package %1"
|
||||||
|
" but this package is not initialized!").
|
||||||
|
arg(i.key(), pkgKey));
|
||||||
|
|
||||||
|
internalError();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
valueLink(_config.packagesEdit(), pkgKey,
|
||||||
|
DistroModule{pkgKey}).addTarget(newTargetKey);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_config.targetsEdit() = temp;
|
_config.targetsEdit() = temp;
|
||||||
@ -1545,15 +1582,10 @@ ConfigParser::ConfigParser(FileManager *filemanager, PluginsParser *pluginsParse
|
|||||||
assert(_scaner);
|
assert(_scaner);
|
||||||
assert(_packing);
|
assert(_packing);
|
||||||
|
|
||||||
#ifdef Q_OS_LINUX
|
_config.appDir = QuasarAppUtils::Params::getCurrentExecutableDir();
|
||||||
_config.appDir = QuasarAppUtils::Params::getArg("appPath");
|
|
||||||
|
|
||||||
if (_config.appDir.right(4) == "/bin") {
|
if (_config.appDir.right(4) == "/bin") {
|
||||||
_config.appDir = _config.appDir.left(_config.appDir.size() - 4);
|
_config.appDir = _config.appDir.left(_config.appDir.size() - 4);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
_config.appDir = QuasarAppUtils::Params::getArg("appPath");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("appDir = " + _config.appDir);
|
QuasarAppUtils::Params::log("appDir = " + _config.appDir);
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ private:
|
|||||||
bool initQmake();
|
bool initQmake();
|
||||||
bool initQmlInput();
|
bool initQmlInput();
|
||||||
|
|
||||||
void packagesErrorLog(const QString &flag);
|
void packagesErrorLog(const QString &option);
|
||||||
|
|
||||||
bool setQmake(const QString &value);
|
bool setQmake(const QString &value);
|
||||||
bool setQtDir(const QString &value);
|
bool setQtDir(const QString &value);
|
||||||
|
@ -66,7 +66,7 @@ QMultiMap<LibPriority, LibInfo> DependenciesScanner::getLibsFromEnvirement(
|
|||||||
|
|
||||||
if (!fillLibInfo(info, lib)) {
|
if (!fillLibInfo(info, lib)) {
|
||||||
QuasarAppUtils::Params::log(
|
QuasarAppUtils::Params::log(
|
||||||
"error extract lib info from " + lib + "(" + libName + ")",
|
"Failed to extract lib info from " + lib + "(" + libName + ")",
|
||||||
QuasarAppUtils::VerboseLvl::Warning);
|
QuasarAppUtils::VerboseLvl::Warning);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -101,14 +101,14 @@ bool DependenciesScanner::fillLibInfo(LibInfo &info, const QString &file) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DependenciesScanner::recursiveDep(LibInfo &lib, QSet<LibInfo> &res, QSet<QString>& libStack) {
|
void DependenciesScanner::recursiveDep(LibInfo &lib, QSet<LibInfo> &res, QSet<QString>& libStack) {
|
||||||
QuasarAppUtils::Params::log("get recursive dependencies of " + lib.fullPath(),
|
QuasarAppUtils::Params::log("Get the recursive dependencies of " + lib.fullPath(),
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
|
|
||||||
if (_scanedLibs.contains(lib.fullPath())) {
|
if (_scanedLibs.contains(lib.fullPath())) {
|
||||||
auto scanedLib = _scanedLibs.value(lib.fullPath());
|
auto scanedLib = _scanedLibs.value(lib.fullPath());
|
||||||
|
|
||||||
if (!scanedLib.isValid()) {
|
if (!scanedLib.isValid()) {
|
||||||
QuasarAppUtils::Params::log( "no valid lib in scanned libs list!",
|
QuasarAppUtils::Params::log( "Detected an invalid library in scanned library cache!!",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ void DependenciesScanner::recursiveDep(LibInfo &lib, QSet<LibInfo> &res, QSet<QS
|
|||||||
|
|
||||||
if (libStack.contains(lib.fullPath())) {
|
if (libStack.contains(lib.fullPath())) {
|
||||||
QuasarAppUtils::Params::log("A recursive dependency was found in library " + lib.fullPath(),
|
QuasarAppUtils::Params::log("A recursive dependency was found in library " + lib.fullPath(),
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,8 +131,8 @@ void DependenciesScanner::recursiveDep(LibInfo &lib, QSet<LibInfo> &res, QSet<QS
|
|||||||
auto libs = getLibsFromEnvirement(i);
|
auto libs = getLibsFromEnvirement(i);
|
||||||
|
|
||||||
if (!libs.size()) {
|
if (!libs.size()) {
|
||||||
QuasarAppUtils::Params::log("lib for dependency " + i + " not found!!",
|
QuasarAppUtils::Params::log("Cannot find the library for dependency " + i,
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Debug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,11 +105,11 @@ DeployCore::QtModule DeployCore::getQtModule(const QString& path) {
|
|||||||
|
|
||||||
void DeployCore::addQtModule(DeployCore::QtModule &module, const QString &path) {
|
void DeployCore::addQtModule(DeployCore::QtModule &module, const QString &path) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("current module " + QString::number(module),
|
QuasarAppUtils::Params::log("Current module " + QString::number(module),
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
|
|
||||||
auto mod = getQtModule(path);
|
auto mod = getQtModule(path);
|
||||||
QuasarAppUtils::Params::log("add new module from path " + path +
|
QuasarAppUtils::Params::log("Add new module from path " + path +
|
||||||
" module value " + QString::number(mod),
|
" module value " + QString::number(mod),
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
|
|
||||||
@ -226,6 +226,7 @@ void DeployCore::help() {
|
|||||||
" All templates extract into targetDirectory."
|
" All templates extract into targetDirectory."
|
||||||
" For change target directory use the targetDir option."
|
" For change target directory use the targetDir option."
|
||||||
" Example: cqtdeployer -bin myExecutable getDefaultTemplate qif deb."},
|
" Example: cqtdeployer -bin myExecutable getDefaultTemplate qif deb."},
|
||||||
|
{"noHashSum", "This option disable computation of a packages hash sum"}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -327,9 +328,9 @@ void DeployCore::help() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
help.unite(QuasarAppUtils::Params::getparamsHelp());
|
help.unite(QuasarAppUtils::Params::getParamsHelp());
|
||||||
|
|
||||||
QuasarAppUtils::Params::showHelp(help);
|
QuasarAppUtils::Help::print(help);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -491,19 +492,19 @@ MSVCVersion DeployCore::getMSVC(const QString &_qtBin) {
|
|||||||
QDir dir = QFileInfo(_qtBin).absoluteFilePath();
|
QDir dir = QFileInfo(_qtBin).absoluteFilePath();
|
||||||
|
|
||||||
if (!dir.cdUp()) {
|
if (!dir.cdUp()) {
|
||||||
QuasarAppUtils::Params::log("is not standart qt repo");
|
QuasarAppUtils::Params::log("is not a standard qt repo", QuasarAppUtils::Debug);
|
||||||
return static_cast<MSVCVersion>(res);
|
return static_cast<MSVCVersion>(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto msvcPath = dir.absolutePath();
|
auto msvcPath = dir.absolutePath();
|
||||||
|
|
||||||
if (!(dir.cdUp() && dir.cdUp())) {
|
if (!(dir.cdUp() && dir.cdUp())) {
|
||||||
QuasarAppUtils::Params::log("is not standart qt repo");
|
QuasarAppUtils::Params::log("is not a standard qt repo", QuasarAppUtils::Debug);
|
||||||
return static_cast<MSVCVersion>(res);
|
return static_cast<MSVCVersion>(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!msvcPath.contains("msvc")) {
|
if (!msvcPath.contains("msvc")) {
|
||||||
QuasarAppUtils::Params::log("vcredis not defined");
|
QuasarAppUtils::Params::log("vcredist not defined", QuasarAppUtils::Debug);
|
||||||
return static_cast<MSVCVersion>(res);
|
return static_cast<MSVCVersion>(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -540,7 +541,7 @@ QString DeployCore::getVCredist(const QString &_qtbinDir) {
|
|||||||
QDir dir = _qtbinDir;
|
QDir dir = _qtbinDir;
|
||||||
|
|
||||||
if (!(dir.cdUp() && dir.cdUp() && dir.cdUp() && dir.cd("vcredist"))) {
|
if (!(dir.cdUp() && dir.cdUp() && dir.cdUp() && dir.cd("vcredist"))) {
|
||||||
QuasarAppUtils::Params::log("redist not found!");
|
QuasarAppUtils::Params::log("vcredist not found!");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,12 +70,14 @@ void Envirement::addEnv(const QStringList &listDirs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!QFileInfo(path).isDir()) {
|
if (!QFileInfo(path).isDir()) {
|
||||||
QuasarAppUtils::Params::log("is not dir!! :" + path);
|
QuasarAppUtils::Params::log(QString("%0 is not a directory!! ").arg(path),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_dataEnvironment.contains(path)) {
|
if (_dataEnvironment.contains(path)) {
|
||||||
QuasarAppUtils::Params::log ("Environment alredy added: " + path);
|
QuasarAppUtils::Params::log (QString("Path %0 is already added").arg(path),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
bool Extracter::deployMSVC() {
|
bool Extracter::deployMSVC() {
|
||||||
QuasarAppUtils::Params::log("try deploy msvc",
|
QuasarAppUtils::Params::log("Trying to deploy msvc", QuasarAppUtils::Debug);
|
||||||
QuasarAppUtils::Info);
|
|
||||||
auto msvcInstaller = DeployCore::getVCredist(DeployCore::_config->qtDir.getBins());
|
auto msvcInstaller = DeployCore::getVCredist(DeployCore::_config->qtDir.getBins());
|
||||||
|
|
||||||
if (msvcInstaller.isEmpty()) {
|
if (msvcInstaller.isEmpty()) {
|
||||||
@ -146,7 +145,7 @@ void Extracter::copyExtraPlugins(const QString& package) {
|
|||||||
if (!_fileManager->copyFile(info.absoluteFilePath(),
|
if (!_fileManager->copyFile(info.absoluteFilePath(),
|
||||||
targetPath + distro.getPluginsOutDir())) {
|
targetPath + distro.getPluginsOutDir())) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("fail to copy extra plugin from:" + info.absoluteFilePath() +
|
QuasarAppUtils::Params::log("Failed to copy extra plugin from:" + info.absoluteFilePath() +
|
||||||
" to: " + targetPath + distro.getPluginsOutDir(),
|
" to: " + targetPath + distro.getPluginsOutDir(),
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
@ -162,7 +161,7 @@ void Extracter::copyExtraPlugins(const QString& package) {
|
|||||||
DeployCore::debugExtensions(),
|
DeployCore::debugExtensions(),
|
||||||
&plugins)) {
|
&plugins)) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("fail to copy extra plugin from:" + info.absoluteFilePath() +
|
QuasarAppUtils::Params::log("Failed to copy extra plugin from:" + info.absoluteFilePath() +
|
||||||
" to: " + targetPath + distro.getPluginsOutDir(),
|
" to: " + targetPath + distro.getPluginsOutDir(),
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
@ -211,9 +210,7 @@ void Extracter::copyLibs(const QSet<QString> &files, const QString& package, boo
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (const auto &file : files) {
|
for (const auto &file : files) {
|
||||||
if (!_fileManager->smartCopyFile(file, libOutpath)) {
|
_fileManager->smartCopyFile(file, libOutpath);
|
||||||
QuasarAppUtils::Params::log(file + " not copied");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,7 +222,7 @@ void Extracter::copyExtraData(const QSet<QString> &files, const QString &package
|
|||||||
for (const auto &file : files) {
|
for (const auto &file : files) {
|
||||||
|
|
||||||
if (!_fileManager->cp(file, targetPath + distro.getExtraDataOutDir())) {
|
if (!_fileManager->cp(file, targetPath + distro.getExtraDataOutDir())) {
|
||||||
QuasarAppUtils::Params::log(file + " not copied");
|
QuasarAppUtils::Params::log("Failed to copy " + file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -243,7 +240,7 @@ void Extracter::copyFiles() {
|
|||||||
|
|
||||||
|
|
||||||
if (!QuasarAppUtils::Params::isEndable("noStrip") && !_fileManager->strip(cnf->getTargetDir())) {
|
if (!QuasarAppUtils::Params::isEndable("noStrip") && !_fileManager->strip(cnf->getTargetDir())) {
|
||||||
QuasarAppUtils::Params::log("strip failed!");
|
QuasarAppUtils::Params::log("Failed to strip libraries!");
|
||||||
}
|
}
|
||||||
|
|
||||||
copyExtraData(_packageDependencyes[i.key()].extraData(), i.key());
|
copyExtraData(_packageDependencyes[i.key()].extraData(), i.key());
|
||||||
@ -276,7 +273,7 @@ bool Extracter::copyTr() {
|
|||||||
|
|
||||||
bool Extracter::deploy() {
|
bool Extracter::deploy() {
|
||||||
QuasarAppUtils::Params::log("target deploy started!!",
|
QuasarAppUtils::Params::log("target deploy started!!",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Debug);
|
||||||
if (!_cqt->smartMoveTargets()) {
|
if (!_cqt->smartMoveTargets()) {
|
||||||
QuasarAppUtils::Params::log("Fail to copy targets", QuasarAppUtils::Error);
|
QuasarAppUtils::Params::log("Fail to copy targets", QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
@ -287,7 +284,7 @@ bool Extracter::deploy() {
|
|||||||
extractExtraDataTargets();
|
extractExtraDataTargets();
|
||||||
|
|
||||||
if (DeployCore::_config->deployQml && !extractQml()) {
|
if (DeployCore::_config->deployQml && !extractQml()) {
|
||||||
QuasarAppUtils::Params::log("qml not extacted!",
|
QuasarAppUtils::Params::log("Failed to extract qml!",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,7 +304,7 @@ bool Extracter::deploy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!deployMSVC()) {
|
if (!deployMSVC()) {
|
||||||
QuasarAppUtils::Params::log("deploy msvc failed", QuasarAppUtils::Warning);
|
QuasarAppUtils::Params::log("Failed to deploy msvc", QuasarAppUtils::Debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
_metaFileManager->createRunMetaFiles(_targetModules);
|
_metaFileManager->createRunMetaFiles(_targetModules);
|
||||||
@ -428,14 +425,14 @@ bool Extracter::extractQml() {
|
|||||||
QFileInfo info(qmlInput);
|
QFileInfo info(qmlInput);
|
||||||
|
|
||||||
if (!info.isDir()) {
|
if (!info.isDir()) {
|
||||||
QuasarAppUtils::Params::log("extract qml fail! qml source dir not exits or is not dir " + qmlInput,
|
QuasarAppUtils::Params::log("Failed to extract qml! The qml source dir does not exist :" + qmlInput,
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
QuasarAppUtils::Params::log("extractQmlFromSource " + info.absoluteFilePath());
|
QuasarAppUtils::Params::log("extractQmlFromSource " + info.absoluteFilePath());
|
||||||
|
|
||||||
if (!QFileInfo::exists(cnf->qtDir.getQmls())) {
|
if (!QFileInfo::exists(cnf->qtDir.getQmls())) {
|
||||||
QuasarAppUtils::Params::log("qml dir wrong!",
|
QuasarAppUtils::Params::log("Failed to extract qml! The qt qml dir is not initialized!",
|
||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -443,7 +440,7 @@ bool Extracter::extractQml() {
|
|||||||
QML ownQmlScaner(cnf->qtDir.getQmls(), cnf->isNeededQt(i.key()));
|
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("Failed to run qml scanner",
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -504,4 +501,3 @@ Extracter::Extracter(FileManager *fileManager, PluginsParser *pluginsParser, Con
|
|||||||
|
|
||||||
_metaFileManager = new MetaFileManager(_fileManager);
|
_metaFileManager = new MetaFileManager(_fileManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "configparser.h"
|
#include "configparser.h"
|
||||||
#include "deploycore.h"
|
#include "deploycore.h"
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QStack>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include "pathutils.h"
|
#include "pathutils.h"
|
||||||
|
|
||||||
@ -25,11 +26,37 @@ FileManager::FileManager() {
|
|||||||
|
|
||||||
bool FileManager::initDir(const QString &path) {
|
bool FileManager::initDir(const QString &path) {
|
||||||
|
|
||||||
if (!QFileInfo::exists(path)) {
|
QString workPath = path;
|
||||||
if (!QDir().mkpath(path)) {
|
|
||||||
|
if (!QFileInfo::exists(workPath)) {
|
||||||
|
|
||||||
|
QStack<QString> toInitDirs;
|
||||||
|
while (!QFile::exists(workPath)) {
|
||||||
|
QString dirName = PathUtils::popItem(workPath);
|
||||||
|
toInitDirs.push(dirName);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
if (toInitDirs.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
QDir dir(workPath);
|
||||||
|
|
||||||
|
while (toInitDirs.size()) {
|
||||||
|
QString dirName = toInitDirs.pop();
|
||||||
|
|
||||||
|
if (!dir.mkdir(dirName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dir.cd(dirName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!addToDeployed(dir.absolutePath())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
addToDeployed(path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -45,7 +72,7 @@ QStringList FileManager::getDeployedFilesStringList() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FileManager::loadDeployemendFiles(const QString &targetDir) {
|
void FileManager::loadDeployemendFiles(const QString &targetDir) {
|
||||||
auto settings = QuasarAppUtils::Settings::get();
|
auto settings = QuasarAppUtils::Settings::instance();
|
||||||
|
|
||||||
if (targetDir.isEmpty())
|
if (targetDir.isEmpty())
|
||||||
return;
|
return;
|
||||||
@ -65,7 +92,7 @@ bool FileManager::addToDeployed(const QString& path) {
|
|||||||
if (info.exists()) {
|
if (info.exists()) {
|
||||||
_deployedFiles += info.absoluteFilePath();
|
_deployedFiles += info.absoluteFilePath();
|
||||||
if (!QFile::setPermissions(path, static_cast<QFile::Permission>(0x7775))) {
|
if (!QFile::setPermissions(path, static_cast<QFile::Permission>(0x7775))) {
|
||||||
QuasarAppUtils::Params::log("permishens set fail", QuasarAppUtils::Warning);
|
QuasarAppUtils::Params::log("Failed to set permissions", QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
@ -75,7 +102,7 @@ bool FileManager::addToDeployed(const QString& path) {
|
|||||||
|
|
||||||
DWORD attribute = GetFileAttributesA(stdString.c_str());
|
DWORD attribute = GetFileAttributesA(stdString.c_str());
|
||||||
if (!SetFileAttributesA(stdString.c_str(), attribute & static_cast<DWORD>(~FILE_ATTRIBUTE_HIDDEN))) {
|
if (!SetFileAttributesA(stdString.c_str(), attribute & static_cast<DWORD>(~FILE_ATTRIBUTE_HIDDEN))) {
|
||||||
QuasarAppUtils::Params::log("attribute set fail", QuasarAppUtils::Warning);
|
QuasarAppUtils::Params::log("Failed to set permissions", QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -90,7 +117,7 @@ void FileManager::removeFromDeployed(const QString &path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FileManager::saveDeploymendFiles(const QString& targetDir) {
|
void FileManager::saveDeploymendFiles(const QString& targetDir) {
|
||||||
auto settings = QuasarAppUtils::Settings::get();
|
auto settings = QuasarAppUtils::Settings::instance();
|
||||||
settings->setValue(targetDir, getDeployedFilesStringList());
|
settings->setValue(targetDir, getDeployedFilesStringList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,7 +130,7 @@ bool FileManager::strip(const QString &dir) const {
|
|||||||
QFileInfo info(dir);
|
QFileInfo info(dir);
|
||||||
|
|
||||||
if (!info.exists()) {
|
if (!info.exists()) {
|
||||||
QuasarAppUtils::Params::log("dir not exits!");
|
QuasarAppUtils::Params::log(QString("Directory %0 does not exist!").arg(dir));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,8 +182,10 @@ bool FileManager::fileActionPrivate(const QString &file, const QString &target,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString operation = (isMove)? "move :": "copy";
|
||||||
|
|
||||||
if (!copy) {
|
if (!copy) {
|
||||||
QuasarAppUtils::Params::log(((isMove)? "skip move :": "skip copy (by mask):" + file ));
|
QuasarAppUtils::Params::log("Skip " + operation + " (by mask) :" + file );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,10 +212,10 @@ bool FileManager::fileActionPrivate(const QString &file, const QString &target,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isMove) {
|
if (isMove) {
|
||||||
QuasarAppUtils::Params::log( "move :" + file,
|
QuasarAppUtils::Params::log(operation + " :" + file,
|
||||||
QuasarAppUtils::Debug);
|
QuasarAppUtils::Debug);
|
||||||
} else {
|
} else {
|
||||||
QuasarAppUtils::Params::log("copy :" + file,
|
QuasarAppUtils::Params::log(operation + " :" + file,
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +223,7 @@ bool FileManager::fileActionPrivate(const QString &file, const QString &target,
|
|||||||
QFile sourceFile(file);
|
QFile sourceFile(file);
|
||||||
auto sourceFileAbsalutePath = QFileInfo(file).absoluteFilePath();
|
auto sourceFileAbsalutePath = QFileInfo(file).absoluteFilePath();
|
||||||
|
|
||||||
bool tarExits = QFileInfo(tergetFile).exists();
|
bool tarExits = QFileInfo::exists(tergetFile);
|
||||||
if (tarExits && !QuasarAppUtils::Params::isEndable("noOverwrite")) {
|
if (tarExits && !QuasarAppUtils::Params::isEndable("noOverwrite")) {
|
||||||
QuasarAppUtils::Params::log(tergetFile + " already exists!",
|
QuasarAppUtils::Params::log(tergetFile + " already exists!",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
@ -205,7 +234,7 @@ bool FileManager::fileActionPrivate(const QString &file, const QString &target,
|
|||||||
sourceFile.rename(tergetFile):
|
sourceFile.rename(tergetFile):
|
||||||
sourceFile.copy(tergetFile))) {
|
sourceFile.copy(tergetFile))) {
|
||||||
|
|
||||||
QuasarAppUtils::Params::log("Operation fail " + file + " >> " + tergetFile,
|
QuasarAppUtils::Params::log("Failed to " + operation + " from " + file + " to " + tergetFile,
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
|
|
||||||
QuasarAppUtils::Params::log(sourceFile.errorString(),
|
QuasarAppUtils::Params::log(sourceFile.errorString(),
|
||||||
@ -233,17 +262,17 @@ bool FileManager::smartCopyFile(const QString &file,
|
|||||||
|
|
||||||
if (file.contains(config->getTargetDir(), ONLY_WIN_CASE_INSENSIATIVE)) {
|
if (file.contains(config->getTargetDir(), ONLY_WIN_CASE_INSENSIATIVE)) {
|
||||||
if (!moveFile(file, target, mask)) {
|
if (!moveFile(file, target, mask)) {
|
||||||
QuasarAppUtils::Params::log(" file not moved! try copy");
|
QuasarAppUtils::Params::log("Failed to move the file. Trying to copy it");
|
||||||
|
|
||||||
if (!copyFile(file, target, mask, ifFileTarget)) {
|
if (!copyFile(file, target, mask, ifFileTarget)) {
|
||||||
QuasarAppUtils::Params::log("not copy target to bin dir " + file,
|
QuasarAppUtils::Params::log("Failed to copy the target file " + file,
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!copyFile(file, target, mask, ifFileTarget)) {
|
if (!copyFile(file, target, mask, ifFileTarget)) {
|
||||||
QuasarAppUtils::Params::log("not copy target to bin dir " + file,
|
QuasarAppUtils::Params::log("Failed to copy the target file " + file,
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -333,19 +362,10 @@ bool FileManager::cp(const QString &from,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (info.isDir()) {
|
if (info.isDir()) {
|
||||||
// This is qt bug, filename return emptu value if dir have the seporator on the end of path.
|
return copyFolder(from, to + "/" + PathUtils::getName(info.absoluteFilePath()),
|
||||||
// Qt 5.15.2
|
|
||||||
auto last = from.right(1);
|
|
||||||
if (last == "/" || last == "\\") {
|
|
||||||
last = from.mid(0, from.size() -1 );
|
|
||||||
info.setFile(last);
|
|
||||||
}
|
|
||||||
|
|
||||||
return copyFolder(from, to + "/" + info.fileName(),
|
|
||||||
filter, listOfCopiedItems, mask, force);
|
filter, listOfCopiedItems, mask, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return copyFile(from, to, mask);
|
return copyFile(from, to, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,10 +412,10 @@ bool FileManager::moveFolder(const QString &from, const QString &to, const QStri
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FileManager::clear(const QString& targetDir, bool force) {
|
void FileManager::clear(const QString& targetDir, bool force) {
|
||||||
QuasarAppUtils::Params::log( "clear start!",
|
QuasarAppUtils::Params::log( "Clear start!",
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
if (force) {
|
if (force) {
|
||||||
QuasarAppUtils::Params::log("clear force! " + targetDir,
|
QuasarAppUtils::Params::log("Force clear " + targetDir,
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
if (QDir(targetDir).removeRecursively()) {
|
if (QDir(targetDir).removeRecursively()) {
|
||||||
return;
|
return;
|
||||||
@ -406,7 +426,7 @@ void FileManager::clear(const QString& targetDir, bool force) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
QMultiMap<int, QFileInfo> sortedOldData;
|
QMultiMap<int, QFileInfo> sortedOldData;
|
||||||
for (auto& i : _deployedFiles) {
|
for (const auto& i : qAsConst(_deployedFiles)) {
|
||||||
sortedOldData.insert(i.size(), QFileInfo(i));
|
sortedOldData.insert(i.size(), QFileInfo(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -496,7 +516,7 @@ bool FileManager::copyFiles(const QStringList &source,
|
|||||||
if (auto rule = config->ignoreList.isIgnore(libInfo)) {
|
if (auto rule = config->ignoreList.isIgnore(libInfo)) {
|
||||||
QuasarAppUtils::Params::log(
|
QuasarAppUtils::Params::log(
|
||||||
info.absoluteFilePath() + " ignored by rule " + rule->label,
|
info.absoluteFilePath() + " ignored by rule " + rule->label,
|
||||||
QuasarAppUtils::VerboseLvl::Info);
|
QuasarAppUtils::VerboseLvl::Debug);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -504,7 +524,7 @@ bool FileManager::copyFiles(const QStringList &source,
|
|||||||
|
|
||||||
if (!copyFile(info.absoluteFilePath(), distanation , mask)) {
|
if (!copyFile(info.absoluteFilePath(), distanation , mask)) {
|
||||||
QuasarAppUtils::Params::log(
|
QuasarAppUtils::Params::log(
|
||||||
"not copied file " + distanation + "/" + info.fileName(),
|
"Failed to copy file " + distanation + "/" + info.fileName(),
|
||||||
QuasarAppUtils::VerboseLvl::Warning);
|
QuasarAppUtils::VerboseLvl::Warning);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -214,15 +214,14 @@ bool MetaFileManager::createQConf(const QString &target) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
auto distro = cnf->getDistro(target);
|
auto distro = cnf->getDistro(target);
|
||||||
|
QString prefix = distro.getRootDir(distro.getBinOutDir());
|
||||||
QString content =
|
QString content =
|
||||||
"[Paths]\n"
|
"[Paths]\n"
|
||||||
"Prefix= ." + distro.getRootDir(distro.getBinOutDir()) + "\n"
|
"Libraries= ." + prefix + distro.getLibOutDir() + "\n"
|
||||||
"Libraries= ." + distro.getLibOutDir() + "\n"
|
"Plugins= ." + prefix + distro.getPluginsOutDir() + "\n"
|
||||||
"Plugins= ." + distro.getPluginsOutDir() + "\n"
|
"Imports= ." + prefix + distro.getQmlOutDir() + "\n"
|
||||||
"Imports= ." + distro.getQmlOutDir() + "\n"
|
"Translations= ." + prefix + distro.getTrOutDir() + "\n"
|
||||||
"Translations= ." + distro.getTrOutDir() + "\n"
|
"Qml2Imports= ." + prefix + distro.getQmlOutDir() + "\n";
|
||||||
"Qml2Imports= ." + distro.getQmlOutDir() + "\n";
|
|
||||||
|
|
||||||
|
|
||||||
content.replace("//", "/");
|
content.replace("//", "/");
|
||||||
@ -254,12 +253,12 @@ void MetaFileManager::createRunMetaFiles(const QHash<QString, DeployCore::QtModu
|
|||||||
for (auto i = DeployCore::_config->targets().cbegin(); i != DeployCore::_config->targets().cend(); ++i) {
|
for (auto i = DeployCore::_config->targets().cbegin(); i != DeployCore::_config->targets().cend(); ++i) {
|
||||||
|
|
||||||
if (!createRunScript(i.key())) {
|
if (!createRunScript(i.key())) {
|
||||||
QuasarAppUtils::Params::log("run script not created!",
|
QuasarAppUtils::Params::log("Failed to create a run script: " + i.key(),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!createQConf(i.key())) {
|
if (!createQConf(i.key())) {
|
||||||
QuasarAppUtils::Params::log("create qt.conf failr", QuasarAppUtils::Warning);
|
QuasarAppUtils::Params::log("Failed to create the qt.conf file", QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
#include <QCryptographicHash>
|
||||||
|
|
||||||
#define TMP_PACKAGE_DIR "tmp_data"
|
#define TMP_PACKAGE_DIR "tmp_data"
|
||||||
|
|
||||||
@ -40,6 +41,41 @@ void Packing::setDistribution(const QList<iDistribution*> &pakages) {
|
|||||||
_pakages = pakages;
|
_pakages = pakages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Packing::calcDistributiveHash(const iDistribution* distro) {
|
||||||
|
|
||||||
|
if (QuasarAppUtils::Params::isEndable("noHashSum")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!distro) {
|
||||||
|
internalError();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto files = distro->outPutFiles();
|
||||||
|
|
||||||
|
for (const auto &file: files) {
|
||||||
|
|
||||||
|
QFileInfo info(file);
|
||||||
|
|
||||||
|
QuasarAppUtils::Params::log("Computing hash of " + info.absoluteFilePath(),
|
||||||
|
QuasarAppUtils::Info);
|
||||||
|
|
||||||
|
QFile out(info.absoluteFilePath() + ".md5");
|
||||||
|
if (!out.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
|
||||||
|
QuasarAppUtils::Params::log("Failed to open " + info.absoluteFilePath(),
|
||||||
|
QuasarAppUtils::Error);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
out.write(calcHash(info.absoluteFilePath()));
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
_fileManager->addToDeployed(out.fileName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool Packing::create() {
|
bool Packing::create() {
|
||||||
|
|
||||||
if (!collectPackages()) {
|
if (!collectPackages()) {
|
||||||
@ -55,7 +91,7 @@ bool Packing::create() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!package->deployTemplate(*this)) {
|
if (!package->deployTemplate(*this)) {
|
||||||
QuasarAppUtils::Params::log(QString("Deploy package template error ocured. Package: %0.").
|
QuasarAppUtils::Params::log(QString("Failed to deploy a package template. Package: %0.").
|
||||||
arg(package->getClassName()),
|
arg(package->getClassName()),
|
||||||
QuasarAppUtils::Error);
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
@ -81,6 +117,9 @@ bool Packing::create() {
|
|||||||
|
|
||||||
_proc->start();
|
_proc->start();
|
||||||
|
|
||||||
|
QuasarAppUtils::Params::log(cmd.command + " " + cmd.arguments.join(' '),
|
||||||
|
QuasarAppUtils::Debug);
|
||||||
|
|
||||||
if (!_proc->waitForStarted()) {
|
if (!_proc->waitForStarted()) {
|
||||||
QuasarAppUtils::Params::log(_proc->errorString(), QuasarAppUtils::Error);
|
QuasarAppUtils::Params::log(_proc->errorString(), QuasarAppUtils::Error);
|
||||||
QuasarAppUtils::Params::log(QString("Process error code: %0").arg(_proc->error()),
|
QuasarAppUtils::Params::log(QString("Process error code: %0").arg(_proc->error()),
|
||||||
@ -117,6 +156,8 @@ bool Packing::create() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calcDistributiveHash(package);
|
||||||
|
|
||||||
package->removeTemplate();
|
package->removeTemplate();
|
||||||
delete package;
|
delete package;
|
||||||
}
|
}
|
||||||
@ -124,7 +165,8 @@ bool Packing::create() {
|
|||||||
const DeployConfig *cfg = DeployCore::_config;
|
const DeployConfig *cfg = DeployCore::_config;
|
||||||
|
|
||||||
if (!QDir(cfg->getTargetDir() + "/" + TMP_PACKAGE_DIR).removeRecursively()) {
|
if (!QDir(cfg->getTargetDir() + "/" + TMP_PACKAGE_DIR).removeRecursively()) {
|
||||||
QuasarAppUtils::Params::log("Fail to remove " + cfg->getTargetDir() + "/" + TMP_PACKAGE_DIR);
|
QuasarAppUtils::Params::log("Failed to remove " + cfg->getTargetDir() + "/" + TMP_PACKAGE_DIR,
|
||||||
|
QuasarAppUtils::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,6 +283,18 @@ bool Packing::restorePackagesLocations() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray Packing::calcHash(const QString &file) {
|
||||||
|
QFile f(file);
|
||||||
|
if (!f.open(QIODevice::ReadOnly)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
QByteArray hash = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5).toHex();
|
||||||
|
f.close();
|
||||||
|
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
void Packing::handleOutputUpdate() {
|
void Packing::handleOutputUpdate() {
|
||||||
|
|
||||||
QByteArray stdoutLog = _proc->readAllStandardOutput();
|
QByteArray stdoutLog = _proc->readAllStandardOutput();
|
||||||
@ -254,5 +308,3 @@ void Packing::handleOutputUpdate() {
|
|||||||
QuasarAppUtils::Params::log(erroutLog,
|
QuasarAppUtils::Params::log(erroutLog,
|
||||||
QuasarAppUtils::Info);
|
QuasarAppUtils::Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,6 +53,19 @@ private:
|
|||||||
|
|
||||||
bool restorePackagesLocations();
|
bool restorePackagesLocations();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief calcDistributiveHash This method calc md hashes for all pacakges of the @a distro distributive
|
||||||
|
* @param distro This is pointer to the distributive object.
|
||||||
|
*/
|
||||||
|
void calcDistributiveHash(const iDistribution* distro);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief calcHash This method calc md5 hash of the file.
|
||||||
|
* @param file This is a file path
|
||||||
|
* @return string value of the file hash. Using the hex.
|
||||||
|
*/
|
||||||
|
QByteArray calcHash(const QString& file);
|
||||||
|
|
||||||
QList<iDistribution*> _pakages;
|
QList<iDistribution*> _pakages;
|
||||||
QProcess *_proc = nullptr;
|
QProcess *_proc = nullptr;
|
||||||
QHash<QString, QString> _packagesLocations;
|
QHash<QString, QString> _packagesLocations;
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
|
||||||
PathUtils::PathUtils()
|
PathUtils::PathUtils()
|
||||||
{
|
{
|
||||||
@ -21,7 +22,8 @@ QString PathUtils::toFullPath(QString path) {
|
|||||||
int index = -1;
|
int index = -1;
|
||||||
do {
|
do {
|
||||||
path.replace("//", "/");
|
path.replace("//", "/");
|
||||||
} while ((index = path.indexOf("//")) >= 0);
|
index = path.indexOf("//");
|
||||||
|
} while (index >= 0);
|
||||||
|
|
||||||
if (path.right(1) != '/') {
|
if (path.right(1) != '/') {
|
||||||
path.insert(path.size(), '/');
|
path.insert(path.size(), '/');
|
||||||
@ -106,6 +108,42 @@ QString PathUtils::fixPath(const QString &path) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString PathUtils::getName(const QString &path) {
|
||||||
|
if (path.isEmpty())
|
||||||
|
return "";
|
||||||
|
|
||||||
|
QString fixedPath = toFullPath(path);
|
||||||
|
|
||||||
|
if (fixedPath == "/") {
|
||||||
|
return fixedPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
short endIndex = fixedPath.lastIndexOf(QRegularExpression("[/\\\\]"));
|
||||||
|
short beginIndex = fixedPath.lastIndexOf(QRegularExpression("[/\\\\]"), endIndex - 1) + 1;
|
||||||
|
|
||||||
|
return fixedPath.mid(beginIndex, endIndex - beginIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString PathUtils::popItem(QString &path) {
|
||||||
|
if (path.isEmpty())
|
||||||
|
return "";
|
||||||
|
|
||||||
|
QString fixedPath = toFullPath(path);
|
||||||
|
|
||||||
|
if (fixedPath == "/") {
|
||||||
|
path = "";
|
||||||
|
return fixedPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
short endIndex = fixedPath.lastIndexOf(QRegularExpression("[/\\\\]"));
|
||||||
|
short beginIndex = fixedPath.lastIndexOf(QRegularExpression("[/\\\\]"), endIndex - 1) + 1;
|
||||||
|
|
||||||
|
path = fixedPath.left(beginIndex);
|
||||||
|
|
||||||
|
return fixedPath.mid(beginIndex, endIndex - beginIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString PathUtils::getReleativePath(QString path) {
|
QString PathUtils::getReleativePath(QString path) {
|
||||||
path = toFullPath(path);
|
path = toFullPath(path);
|
||||||
|
|
||||||
@ -136,7 +174,10 @@ QString PathUtils::stripPath(QString path) {
|
|||||||
QString PathUtils::fullStripPath(QString path) {
|
QString PathUtils::fullStripPath(QString path) {
|
||||||
path = stripPath(path);
|
path = stripPath(path);
|
||||||
|
|
||||||
if (path.left(1) == '/') {
|
if (path.isEmpty())
|
||||||
|
return path;
|
||||||
|
|
||||||
|
if (path.at(0) == '/') {
|
||||||
return path.remove(0, 1);
|
return path.remove(0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,6 +92,20 @@ public:
|
|||||||
*/
|
*/
|
||||||
static QString fixPath(const QString & path);
|
static QString fixPath(const QString & path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief getName This method is altarnatve of the QFileInfo::fileName() method.
|
||||||
|
* @return name of the object in path.
|
||||||
|
*/
|
||||||
|
static QString getName(const QString &path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief popItem This method remove last item from path.
|
||||||
|
* @param path This is path of the file of directoey.
|
||||||
|
* @return return mame pf the poped item.
|
||||||
|
* @note This method do not check items to exits.
|
||||||
|
*/
|
||||||
|
static QString popItem(QString& path);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PATHUTILS_H
|
#endif // PATHUTILS_H
|
||||||
|
@ -88,6 +88,16 @@ bool QML::extractImportsFromDir(const QString &path, bool recursive) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// task https://github.com/QuasarApp/CQtDeployer/issues/600
|
||||||
|
// There are no import lines for the qt models module in Qt 6.1, but this module is required for all qml applications.
|
||||||
|
if (_qtVersion & QtMajorVersion::Qt6) {
|
||||||
|
auto importQtQml = "QtQml";
|
||||||
|
if (!_imports.contains(importQtQml)) {
|
||||||
|
_imports.insert(importQtQml);
|
||||||
|
extractImportsFromDir(getPathFromImport(importQtQml), recursive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (recursive) {
|
if (recursive) {
|
||||||
for (const auto &info: dirs) {
|
for (const auto &info: dirs) {
|
||||||
extractImportsFromDir(info.absoluteFilePath(), recursive);
|
extractImportsFromDir(info.absoluteFilePath(), recursive);
|
||||||
@ -145,7 +155,7 @@ bool QML::deployPath(const QString &path, QStringList &res) {
|
|||||||
|
|
||||||
for (const auto &info : qAsConst(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("Skip debug library " +
|
||||||
info.absoluteFilePath());
|
info.absoluteFilePath());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ QT_DIR= $$[QT_HOST_BINS]
|
|||||||
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
||||||
win32:LUPDATE = $$QT_DIR/lupdate.exe
|
win32:LUPDATE = $$QT_DIR/lupdate.exe
|
||||||
win32:LRELEASE = $$QT_DIR/lrelease.exe
|
win32:LRELEASE = $$QT_DIR/lrelease.exe
|
||||||
win32:DEPLOYER=$$(cqtdeployer)
|
win32:DEPLOYER=cqtdeployer
|
||||||
|
|
||||||
|
|
||||||
contains(QMAKE_HOST.os, Linux):{
|
contains(QMAKE_HOST.os, Linux):{
|
||||||
|
@ -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.31</Version>
|
<Version>1.5.0.34</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.31</Version>
|
<Version>1.5.0.34</Version>
|
||||||
<Title>CQtDeployer</Title>
|
<Title>CQtDeployer</Title>
|
||||||
<Publisher>QuasarApp</Publisher>
|
<Publisher>QuasarApp</Publisher>
|
||||||
<StartMenuDir>CQtDeployer</StartMenuDir>
|
<StartMenuDir>CQtDeployer</StartMenuDir>
|
||||||
|
@ -15,6 +15,8 @@ Controller.prototype.ComponentSelectionPageCallback = function()
|
|||||||
if (widget !== null && installer.isInstaller()) {
|
if (widget !== null && installer.isInstaller()) {
|
||||||
widget.deselectAll();
|
widget.deselectAll();
|
||||||
widget.selectComponent('cqtdeployer.1_5');
|
widget.selectComponent('cqtdeployer.1_5');
|
||||||
|
widget.selectComponent('QIF');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,36 +4,36 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>controlScript</name>
|
<name>controlScript</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="controlScript.js" line="24"/>
|
<location filename="controlScript.js" line="26"/>
|
||||||
<source>CQtDeployer</source>
|
<source>CQtDeployer</source>
|
||||||
<translation>CQtDeployer</translation>
|
<translation>CQtDeployer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="controlScript.js" line="25"/>
|
<location filename="controlScript.js" line="27"/>
|
||||||
<source>Install CQtDeployer</source>
|
<source>Install CQtDeployer</source>
|
||||||
<oldsource>Install Snake</oldsource>
|
<oldsource>Install Snake</oldsource>
|
||||||
<translation>Установка CQtDeployer</translation>
|
<translation>Установка CQtDeployer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="controlScript.js" line="39"/>
|
<location filename="controlScript.js" line="41"/>
|
||||||
<location filename="controlScript.js" line="45"/>
|
<location filename="controlScript.js" line="47"/>
|
||||||
<source>install in system</source>
|
<source>install in system</source>
|
||||||
<translation>Установка в систему</translation>
|
<translation>Установка в систему</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="controlScript.js" line="39"/>
|
<location filename="controlScript.js" line="41"/>
|
||||||
<location filename="controlScript.js" line="45"/>
|
<location filename="controlScript.js" line="47"/>
|
||||||
<source>Installer</source>
|
<source>Installer</source>
|
||||||
<translation>Установщик</translation>
|
<translation>Установщик</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="controlScript.js" line="40"/>
|
<location filename="controlScript.js" line="42"/>
|
||||||
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer".</source>
|
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer".</source>
|
||||||
<oldsource>To uninstall cqtdeployer on your system, you need administrator rights!. </oldsource>
|
<oldsource>To uninstall cqtdeployer on your system, you need administrator rights!. </oldsource>
|
||||||
<translation type="unfinished">Чтобы удалить cqtdeployer в вашей системе, вам нужны права администратора !. </translation>
|
<translation type="unfinished">Чтобы удалить cqtdeployer в вашей системе, вам нужны права администратора !. </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="controlScript.js" line="46"/>
|
<location filename="controlScript.js" line="48"/>
|
||||||
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer", cqt or cqtdeployer.cqt.</source>
|
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer", cqt or cqtdeployer.cqt.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
.QWidget {
|
.QWidget {
|
||||||
background-color: rgb(255, 255, 255);
|
background-color: rgb(255, 255, 255);
|
||||||
min-width: 640px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.QLabel {
|
.QLabel {
|
||||||
|
@ -17,7 +17,14 @@ win32:OUT_BIN= -binOut bin
|
|||||||
BASE_DEPLOY_FLAGS = clear -qmake $$QMAKE_BIN -libDir $$PWD/../ -recursiveDepth 4 -ignoreEnv $$DEPLOY_TARGET
|
BASE_DEPLOY_FLAGS = clear -qmake $$QMAKE_BIN -libDir $$PWD/../ -recursiveDepth 4 -ignoreEnv $$DEPLOY_TARGET
|
||||||
BASE_DEPLOY_FLAGS_CQT = $$BASE_DEPLOY_FLAGS -targetDir $$DATA_DIR $$OUT_LIB $$OUT_BIN
|
BASE_DEPLOY_FLAGS_CQT = $$BASE_DEPLOY_FLAGS -targetDir $$DATA_DIR $$OUT_LIB $$OUT_BIN
|
||||||
|
|
||||||
|
|
||||||
|
win32:CQT_ICON = -icon $$PWD/config/icon.ico
|
||||||
|
unix:CQT_ICON = -icon $$PWD/config/logo.png
|
||||||
|
BASE_DEPLOY_FLAGS_DEB = $$BASE_DEPLOY_FLAGS -targetDir $$PWD/../Distro $$OUT_LIB $$OUT_BIN deb zip -publisher QuasarApp $$CQT_ICON -deployVersion 1.5.0.34
|
||||||
|
|
||||||
|
DEPLOY_TARGET_DEB = $$DEPLOY_TARGET,$$PWD/packages/QIF/data/QIF
|
||||||
deploy_dep.commands += $$DEPLOYER -bin $$DEPLOY_TARGET $$BASE_DEPLOY_FLAGS_CQT
|
deploy_dep.commands += $$DEPLOYER -bin $$DEPLOY_TARGET $$BASE_DEPLOY_FLAGS_CQT
|
||||||
|
deploy_deb.commands += $$DEPLOYER -bin $$DEPLOY_TARGET_DEB $$BASE_DEPLOY_FLAGS_DEB
|
||||||
|
|
||||||
win32:CONFIG_FILE = $$PWD/config/configWin.xml
|
win32:CONFIG_FILE = $$PWD/config/configWin.xml
|
||||||
unix:CONFIG_FILE = $$PWD/config/configLinux.xml
|
unix:CONFIG_FILE = $$PWD/config/configLinux.xml
|
||||||
@ -29,7 +36,9 @@ deployOffline.commands = $$EXEC \
|
|||||||
$$PWD/../Distro/$$OUT_FILE_OFF
|
$$PWD/../Distro/$$OUT_FILE_OFF
|
||||||
|
|
||||||
deploy.depends = deploy_dep
|
deploy.depends = deploy_dep
|
||||||
|
|
||||||
deploy.depends += deployOffline
|
deploy.depends += deployOffline
|
||||||
|
deploy.depends += deploy_deb
|
||||||
|
|
||||||
win32:ONLINE_REPO_DIR = $$ONLINE/CQtDeployer/Windows
|
win32:ONLINE_REPO_DIR = $$ONLINE/CQtDeployer/Windows
|
||||||
unix:ONLINE_REPO_DIR = $$ONLINE/CQtDeployer/Linux
|
unix:ONLINE_REPO_DIR = $$ONLINE/CQtDeployer/Linux
|
||||||
@ -84,6 +93,7 @@ include(QIF.pri)
|
|||||||
|
|
||||||
QMAKE_EXTRA_TARGETS += \
|
QMAKE_EXTRA_TARGETS += \
|
||||||
deploy_dep \
|
deploy_dep \
|
||||||
|
deploy_deb \
|
||||||
deployOffline \
|
deployOffline \
|
||||||
deploy \
|
deploy \
|
||||||
create_repo \
|
create_repo \
|
||||||
|
@ -3,12 +3,11 @@ const VERSION = "1.5"
|
|||||||
function Component()
|
function Component()
|
||||||
{
|
{
|
||||||
generateTr();
|
generateTr();
|
||||||
component.addDependency("QIF");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateTr() {
|
function generateTr() {
|
||||||
component.setValue("DisplayName", qsTr("CQtDeployer " + VERSION + " Alpha"));
|
component.setValue("DisplayName", qsTr("CQtDeployer " + VERSION + " Candidate"));
|
||||||
component.setValue("Description", qsTr("This package contains CQtDeployer version " + VERSION + " 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."));
|
component.setValue("Description", qsTr("This package contains CQtDeployer version " + VERSION));
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.prototype.createOperations = function()
|
Component.prototype.createOperations = function()
|
||||||
@ -92,14 +91,14 @@ function systemIntegration() {
|
|||||||
component.addOperation('EnvironmentVariable',
|
component.addOperation('EnvironmentVariable',
|
||||||
[
|
[
|
||||||
"cqtdeployer",
|
"cqtdeployer",
|
||||||
"\"" + targetDir + "\\" + VERSION + "\\cqtdeployer.bat\""
|
targetDir + "\\" + VERSION + "\\cqtdeployer.bat"
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
component.addOperation('EnvironmentVariable',
|
component.addOperation('EnvironmentVariable',
|
||||||
[
|
[
|
||||||
"cqtDir",
|
"cqtDir",
|
||||||
"\"" + targetDir + "\\" + VERSION + "\\\""
|
targetDir + "\\" + VERSION + "\\"
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<Package>
|
<Package>
|
||||||
<DisplayName>CQtDeployer 1.5 Beta</DisplayName>
|
<DisplayName>CQtDeployer 1.5 Beta</DisplayName>
|
||||||
<Description>CQtDeployer 1.5 Beta. 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 Beta. 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.31</Version>
|
<Version>1.5.0.34</Version>
|
||||||
<Default>true</Default>
|
<Default>true</Default>
|
||||||
<ForcedInstallation>false</ForcedInstallation>
|
<ForcedInstallation>false</ForcedInstallation>
|
||||||
<Script>installscript.js</Script>
|
<Script>installscript.js</Script>
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit d978f47ea5c4750184ae802e79f1f5bc18b95f2f
|
Subproject commit 553e337e6a956534d34dbbfcec42359117aa35d4
|
@ -44,11 +44,6 @@ class deploytest : public QObject
|
|||||||
private:
|
private:
|
||||||
QSet<QString> filesTree;
|
QSet<QString> filesTree;
|
||||||
|
|
||||||
bool runProcess(const QString& DistroPath,
|
|
||||||
const QString& filename,
|
|
||||||
const QString &qt = "");
|
|
||||||
QStringList getFilesFromDir(const QString& dir);
|
|
||||||
|
|
||||||
void runTestParams(QStringList list,
|
void runTestParams(QStringList list,
|
||||||
QSet<QString> *tree = nullptr,
|
QSet<QString> *tree = nullptr,
|
||||||
bool noWarnings = false,
|
bool noWarnings = false,
|
||||||
@ -101,18 +96,17 @@ private slots:
|
|||||||
void testOverwrite();
|
void testOverwrite();
|
||||||
void testOverwriteWithPacking();
|
void testOverwriteWithPacking();
|
||||||
|
|
||||||
|
// tested flags confFile
|
||||||
|
void testConfFile();
|
||||||
|
|
||||||
// tested flags binDir
|
// tested flags binDir
|
||||||
void testextraData();
|
void testextraData();
|
||||||
|
|
||||||
// tested flags qmlDir qmake
|
// tested flags qmlDir qmake
|
||||||
void testQt();
|
void testQt();
|
||||||
|
|
||||||
|
|
||||||
void testWebEngine();
|
void testWebEngine();
|
||||||
|
|
||||||
// tested flags confFile
|
|
||||||
void testConfFile();
|
|
||||||
|
|
||||||
// tested flags targetPackage
|
// tested flags targetPackage
|
||||||
void testPackages();
|
void testPackages();
|
||||||
|
|
||||||
@ -142,8 +136,6 @@ private slots:
|
|||||||
|
|
||||||
void testMSVC();
|
void testMSVC();
|
||||||
|
|
||||||
void testEmptyParamsString();
|
|
||||||
|
|
||||||
// qif flags
|
// qif flags
|
||||||
void testQIF();
|
void testQIF();
|
||||||
void testQIFMulti();
|
void testQIFMulti();
|
||||||
@ -183,88 +175,21 @@ private slots:
|
|||||||
void testVirtualKeyBoard();
|
void testVirtualKeyBoard();
|
||||||
// Attention! This test only covers 40% of icon functions
|
// Attention! This test only covers 40% of icon functions
|
||||||
void testIcons();
|
void testIcons();
|
||||||
|
void testPathUtils();
|
||||||
void testBinPrefix();
|
void testBinPrefix();
|
||||||
|
|
||||||
|
void testMd5();
|
||||||
|
|
||||||
void customTest();
|
void customTest();
|
||||||
};
|
};
|
||||||
|
|
||||||
bool deploytest::runProcess(const QString &DistroPath,
|
|
||||||
const QString &filename,
|
|
||||||
const QString& qt) {
|
|
||||||
|
|
||||||
QProcess p;
|
|
||||||
|
|
||||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
|
||||||
|
|
||||||
if (qt.size()) {
|
|
||||||
auto val = env.value("LD_LIBRARY_PATH","").remove(qt);
|
|
||||||
env.insert("LD_LIBRARY_PATH", val);
|
|
||||||
|
|
||||||
val = env.value("PATH","").remove(qt);
|
|
||||||
env.insert("PATH", val);
|
|
||||||
|
|
||||||
env.insert("QTDIR", "");
|
|
||||||
} else {
|
|
||||||
env.clear();
|
|
||||||
env.insert("QTDIR", "");
|
|
||||||
|
|
||||||
}
|
|
||||||
p.setProcessEnvironment(env);
|
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
|
||||||
p.setProgram(DistroPath + "/" + filename + ".sh");
|
|
||||||
#else
|
|
||||||
p.setProgram(DistroPath + "/" + filename + ".exe");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
p.start();
|
|
||||||
|
|
||||||
if (!p.waitForFinished(10000)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString str = p.readAll();
|
|
||||||
if (p.exitCode()) {
|
|
||||||
qCritical() << p.errorString();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p.exitCode()) {
|
|
||||||
qWarning() << "exitCode == " << p.exitCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (str.contains("failed to load component", Qt::CaseInsensitive)
|
|
||||||
|| str.contains("is not installed", Qt::CaseInsensitive) ||
|
|
||||||
str.contains("error", Qt::CaseInsensitive)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return p.exitCode() == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
QStringList deploytest::getFilesFromDir(const QString &path) {
|
|
||||||
QDir dir(path);
|
|
||||||
|
|
||||||
QStringList res;
|
|
||||||
|
|
||||||
auto list = dir.entryInfoList(QDir::Dirs| QDir::Files| QDir::NoDotAndDotDot);
|
|
||||||
|
|
||||||
for (const auto &subDir: qAsConst(list)) {
|
|
||||||
|
|
||||||
if (subDir.isFile()) {
|
|
||||||
res.push_back(subDir.fileName());
|
|
||||||
} else {
|
|
||||||
res.append(getFilesFromDir(subDir.absoluteFilePath()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
deploytest::deploytest() {
|
deploytest::deploytest() {
|
||||||
|
|
||||||
qputenv("QTEST_FUNCTION_TIMEOUT", "1800000");
|
qputenv("QTEST_FUNCTION_TIMEOUT", "1800000");
|
||||||
|
QString qifwPath = qgetenv("PATH") + DeployCore::getEnvSeparator() + TestQtDir + "../../Tools/QtInstallerFramework/4.0/bin/";
|
||||||
|
qifwPath += qifwPath + DeployCore::getEnvSeparator() + TestQtDir + "../../Tools/QtInstallerFramework/4.1/bin/";
|
||||||
|
|
||||||
|
qputenv("PATH", qifwPath.toLatin1().data());
|
||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
QStringList pathList = QProcessEnvironment::systemEnvironment().
|
QStringList pathList = QProcessEnvironment::systemEnvironment().
|
||||||
@ -530,9 +455,6 @@ void deploytest::testMSVC() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void deploytest::testEmptyParamsString() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void deploytest::testWebEngine() {
|
void deploytest::testWebEngine() {
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
@ -562,77 +484,62 @@ void deploytest::testWebEngine() {
|
|||||||
void deploytest::testQIF() {
|
void deploytest::testQIF() {
|
||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
QString qmake = TestQtDir + "bin/qmake";
|
||||||
auto comapareTree = utils.createTree({
|
auto comapareTree = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/InstallerTestQMLWidgets.run",
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.run",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.run.md5",
|
||||||
});
|
});
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "TestQMLWidgets.exe";
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake.exe";
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
||||||
auto comapareTree = utils.createTree({
|
auto comapareTree = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/InstallerTestQMLWidgets.exe",
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.exe",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.exe.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"qif", "qifFromSystem",
|
"qif", "qifFromSystem",
|
||||||
"-qifStyle", "quasar",
|
"-qifStyle", "quasar",
|
||||||
"-qifBanner", TestBinDir + "/../../res/CQtDeployer_banner_web.png",
|
"-qifBanner", TestBinDir + "/../../res/CQtDeployer_banner_web.png",
|
||||||
"-qifLogo", TestBinDir + "/../../res/CQtDeployer defaultIcon_web.png"}, &comapareTree, true);
|
"-qifLogo", TestBinDir + "/../../res/CQtDeployer defaultIcon_web.png"}, &comapareTree, true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void deploytest::testQIFMulti() {
|
void deploytest::testQIFMulti() {
|
||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString target1 = TestBinDir + "TestCPPOnly";
|
||||||
QString target1 = TestBinDir + "TestOnlyC";
|
QString target2 = TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
auto comapareTreeMulti = utils.createTree({
|
auto comapareTreeMulti = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/InstallerQtWidgetsProject.run",
|
"./" + DISTRO_DIR + "/InstallerApplication.run",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerApplication.run.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "TestQMLWidgets.exe";
|
QString target1 = TestBinDir + "TestCPPOnly.exe";
|
||||||
QString target1 = TestBinDir + "TestOnlyC.exe";
|
QString target2 = TestBinDir + "TestOnlyC.exe";
|
||||||
|
|
||||||
auto comapareTreeMulti = utils.createTree({
|
auto comapareTreeMulti = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/InstallerQtWidgetsProject.exe",
|
"./" + DISTRO_DIR + "/InstallerApplication.exe",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerApplication.exe.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
QString bin = target1;
|
||||||
#ifdef Q_OS_UNIX
|
|
||||||
QString target2 = TestBinDir + "TestQMLWidgets";
|
|
||||||
QString target3 = TestBinDir + "QtWidgetsProject";
|
|
||||||
|
|
||||||
#else
|
|
||||||
QString target2 = TestBinDir + "TestQMLWidgets.exe";
|
|
||||||
QString target3 = TestBinDir + "QtWidgetsProject.exe";
|
|
||||||
|
|
||||||
#endif
|
|
||||||
bin = target1;
|
|
||||||
bin += "," + target2;
|
bin += "," + target2;
|
||||||
bin += "," + target3;
|
|
||||||
|
|
||||||
auto packageString = "/package1/;" + QFileInfo(target1).absoluteFilePath() + ",/package2/;" + QFileInfo(target2).absoluteFilePath();
|
auto packageString = "/package1/;" + QFileInfo(target1).absoluteFilePath() + ",/package2/;" + QFileInfo(target2).absoluteFilePath();
|
||||||
runTestParams({"-bin", bin, "force-clear",
|
runTestParams({"-bin", bin, "force-clear",
|
||||||
"-binOut", "/lol",
|
|
||||||
"-libOut", "/lolLib",
|
|
||||||
"-trOut", "/lolTr",
|
|
||||||
"-pluginOut", "/p",
|
|
||||||
"-qmlOut", "/q",
|
|
||||||
"-qmlDir", "package2;" + TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"-targetPackage", packageString,
|
"-targetPackage", packageString,
|
||||||
"qif", "qifFromSystem"}, &comapareTreeMulti, true);
|
"qif", "qifFromSystem"}, &comapareTreeMulti, true);
|
||||||
}
|
}
|
||||||
@ -641,26 +548,28 @@ void deploytest::testQIFCustom() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "QtWidgetsProject" + "," + TestBinDir + "TestOnlyC";
|
QString bin = TestBinDir + "TestCPPOnly" + "," + TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
QString qmake = TestQtDir + "bin/qmake";
|
||||||
|
|
||||||
auto comapareTreeCustom = utils.createTree({
|
auto comapareTreeCustom = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/Installerorg.qtproject.ifw.example.stylesheet.run",
|
"./" + DISTRO_DIR + "/Installerorg.qtproject.ifw.example.stylesheet.run",
|
||||||
|
"./" + DISTRO_DIR + "/Installerorg.qtproject.ifw.example.stylesheet.run.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "QtWidgetsProject.exe" + "," + TestBinDir + "TestOnlyC.exe";
|
QString bin = TestBinDir + "TestCPPOnly.exe" + "," + TestBinDir + "TestOnlyC.exe";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake.exe";
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
||||||
auto comapareTreeCustom = utils.createTree({
|
auto comapareTreeCustom = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/Installerorg.qtproject.ifw.example.stylesheet.exe",
|
"./" + DISTRO_DIR + "/Installerorg.qtproject.ifw.example.stylesheet.exe",
|
||||||
|
"./" + DISTRO_DIR + "/Installerorg.qtproject.ifw.example.stylesheet.exe.md5",
|
||||||
});
|
});
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
"-qmake", qmake,
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"-qif", TestBinDir + "/../../UnitTests/testRes/QIFCustomTemplate",
|
"-qif", TestBinDir + "/../../UnitTests/testRes/QIFCustomTemplate",
|
||||||
"-name", "org.qtproject.ifw.example.stylesheet",
|
"-name", "org.qtproject.ifw.example.stylesheet",
|
||||||
"qifFromSystem"}, &comapareTreeCustom, true);
|
"qifFromSystem"}, &comapareTreeCustom, true);
|
||||||
@ -672,29 +581,21 @@ void deploytest::testZIP() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
auto comapareTree = utils.createTree({
|
auto comapareTree = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.zip",
|
"./" + DISTRO_DIR + "/TestOnlyC.zip",
|
||||||
|
"./" + DISTRO_DIR + "/TestOnlyC.zip.md5",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "TestQMLWidgets.exe";
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake.exe";
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"zip", "verbose"}, &comapareTree, true);
|
"zip", "verbose"}, &comapareTree, true);
|
||||||
|
|
||||||
|
|
||||||
// test clear for zip
|
// test clear for zip
|
||||||
runTestParams({"clear", "verbose"}, nullptr, true);
|
runTestParams({"clear", "verbose"}, nullptr, true);
|
||||||
|
|
||||||
@ -704,39 +605,26 @@ void deploytest::testZIPMulti() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
auto comapareTreeMulti = utils.createTree({
|
auto comapareTreeMulti = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.zip",
|
|
||||||
"./" + DISTRO_DIR + "/package1.zip",
|
"./" + DISTRO_DIR + "/package1.zip",
|
||||||
"./" + DISTRO_DIR + "/package2.zip",
|
"./" + DISTRO_DIR + "/package2.zip",
|
||||||
|
"./" + DISTRO_DIR + "/package1.zip.md5",
|
||||||
|
"./" + DISTRO_DIR + "/package2.zip.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString target1 = TestBinDir + "TestCPPOnly";
|
||||||
QString target1 = TestBinDir + "TestOnlyC";
|
QString target2 = TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
QString target2 = TestBinDir + "TestQMLWidgets";
|
|
||||||
QString target3 = TestBinDir + "QtWidgetsProject";
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString target2 = TestBinDir + "TestQMLWidgets.exe";
|
QString target1 = TestBinDir + "TestCPPOnly.exe";
|
||||||
QString target3 = TestBinDir + "QtWidgetsProject.exe";
|
QString target2 = TestBinDir + "TestOnlyC.exe";
|
||||||
QString bin = TestBinDir + "TestQMLWidgets.exe";
|
|
||||||
QString target1 = TestBinDir + "TestOnlyC.exe";
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
bin = target1;
|
QString bin = target1;
|
||||||
bin += "," + target2;
|
bin += "," + target2;
|
||||||
bin += "," + target3;
|
|
||||||
|
|
||||||
auto packageString = "/package1/;" + QFileInfo(target1).absoluteFilePath() + ",/package2/;" + QFileInfo(target2).absoluteFilePath();
|
auto packageString = "/package1/;" + QFileInfo(target1).absoluteFilePath() + ",/package2/;" + QFileInfo(target2).absoluteFilePath();
|
||||||
runTestParams({"-bin", bin, "force-clear",
|
runTestParams({"-bin", bin, "force-clear",
|
||||||
"-binOut", "/lol",
|
|
||||||
"-libOut", "/lolLib",
|
|
||||||
"-trOut", "/lolTr",
|
|
||||||
"-pluginOut", "/p",
|
|
||||||
"-qmlOut", "/q",
|
|
||||||
"-qmlDir", "package2;" + TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"-targetPackage", packageString,
|
"-targetPackage", packageString,
|
||||||
"zip"}, &comapareTreeMulti, true);
|
"zip"}, &comapareTreeMulti, true);
|
||||||
}
|
}
|
||||||
@ -747,17 +635,14 @@ void deploytest::testDEB() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
auto comapareTree = utils.createTree({
|
auto comapareTree = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.deb",
|
"./" + DISTRO_DIR + "/TestOnlyC.deb",
|
||||||
|
"./" + DISTRO_DIR + "/TestOnlyC.deb.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"deb", "verbose"}, &comapareTree, true);
|
"deb", "verbose"}, &comapareTree, true);
|
||||||
|
|
||||||
// test clear for deb
|
// test clear for deb
|
||||||
@ -772,30 +657,22 @@ void deploytest::testDEBMulti() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
auto comapareTreeMulti = utils.createTree({
|
auto comapareTreeMulti = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.deb",
|
|
||||||
"./" + DISTRO_DIR + "/package1.deb",
|
"./" + DISTRO_DIR + "/package1.deb",
|
||||||
"./" + DISTRO_DIR + "/package2.deb",
|
"./" + DISTRO_DIR + "/package2.deb",
|
||||||
|
"./" + DISTRO_DIR + "/package1.deb.md5",
|
||||||
|
"./" + DISTRO_DIR + "/package2.deb.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString target1 = TestBinDir + "TestCPPOnly";
|
||||||
QString target1 = TestBinDir + "TestOnlyC";
|
|
||||||
|
|
||||||
QString target2 = TestBinDir + "TestQMLWidgets";
|
QString target2 = TestBinDir + "TestOnlyC";
|
||||||
QString target3 = TestBinDir + "QtWidgetsProject";
|
|
||||||
|
|
||||||
bin = target1;
|
QString bin = target1;
|
||||||
bin += "," + target2;
|
bin += "," + target2;
|
||||||
bin += "," + target3;
|
|
||||||
|
|
||||||
auto packageString = "/package1/;" + QFileInfo(target1).absoluteFilePath() + ",/package2/;" + QFileInfo(target2).absoluteFilePath();
|
auto packageString = "/package1/;" + QFileInfo(target1).absoluteFilePath() + ",/package2/;" + QFileInfo(target2).absoluteFilePath();
|
||||||
runTestParams({"-bin", bin, "force-clear",
|
runTestParams({"-bin", bin, "force-clear",
|
||||||
"-binOut", "/lol",
|
|
||||||
"-libOut", "/lolLib",
|
|
||||||
"-trOut", "/lolTr",
|
|
||||||
"-pluginOut", "/p",
|
|
||||||
"-qmlOut", "/q",
|
|
||||||
"-qmlDir", "package2;" + TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"-targetPackage", packageString,
|
"-targetPackage", packageString,
|
||||||
"deb"}, &comapareTreeMulti, true);
|
"deb"}, &comapareTreeMulti, true);
|
||||||
#endif
|
#endif
|
||||||
@ -806,17 +683,15 @@ void deploytest::testDEBCustom() {
|
|||||||
|
|
||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
|
||||||
|
|
||||||
auto comapareTreeCustom = utils.createTree({
|
auto comapareTreeCustom = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/chrome.deb",
|
"./" + DISTRO_DIR + "/chrome.deb",
|
||||||
|
"./" + DISTRO_DIR + "/chrome.deb.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"-deb", TestBinDir + "/../../UnitTests/testRes/DEBCustomTemplate",
|
"-deb", TestBinDir + "/../../UnitTests/testRes/DEBCustomTemplate",
|
||||||
"-name", "chrome"},
|
"-name", "chrome"},
|
||||||
&comapareTreeCustom, true);
|
&comapareTreeCustom, true);
|
||||||
@ -829,18 +704,18 @@ void deploytest::testMultiPacking() {
|
|||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
|
|
||||||
auto comapareTree = utils.createTree({
|
auto comapareTree = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.zip",
|
"./" + DISTRO_DIR + "/TestOnlyC.zip",
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.deb",
|
"./" + DISTRO_DIR + "/TestOnlyC.deb",
|
||||||
"./" + DISTRO_DIR + "/InstallerTestQMLWidgets.run",
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.run",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.run.md5",
|
||||||
|
"./" + DISTRO_DIR + "/TestOnlyC.zip.md5",
|
||||||
|
"./" + DISTRO_DIR + "/TestOnlyC.deb.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
QString bin = TestBinDir + "TestQMLWidgets";
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"zip",
|
"zip",
|
||||||
"qif", "qifFromSystem",
|
"qif", "qifFromSystem",
|
||||||
"deb",
|
"deb",
|
||||||
@ -848,16 +723,14 @@ void deploytest::testMultiPacking() {
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
auto comapareTree = utils.createTree({
|
auto comapareTree = utils.createTree({
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.zip",
|
"./" + DISTRO_DIR + "/TestOnlyC.zip",
|
||||||
"./" + DISTRO_DIR + "/InstallerTestQMLWidgets.exe",
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.exe",
|
||||||
|
"./" + DISTRO_DIR + "/TestOnlyC.zip.md5",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTestOnlyC.exe.md5",
|
||||||
});
|
});
|
||||||
QString bin = TestBinDir + "TestQMLWidgets.exe";
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
||||||
|
|
||||||
QString qmake = TestQtDir + "bin/qmake.exe";
|
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
"zip",
|
"zip",
|
||||||
"qif", "qifFromSystem",
|
"qif", "qifFromSystem",
|
||||||
"verbose"}, &comapareTree, true);
|
"verbose"}, &comapareTree, true);
|
||||||
@ -1088,41 +961,6 @@ void deploytest::testEmptyPackages() {
|
|||||||
"-libDir", TestQtDir + "bin",
|
"-libDir", TestQtDir + "bin",
|
||||||
"-prefix", "package;prefix",
|
"-prefix", "package;prefix",
|
||||||
"allowEmptyPackages"}, &comapareTree);
|
"allowEmptyPackages"}, &comapareTree);
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
|
||||||
bin = TestBinDir + "QtWidgetsProject";
|
|
||||||
|
|
||||||
comapareTree = utils.createTree(
|
|
||||||
{
|
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.zip",
|
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.deb",
|
|
||||||
"./" + DISTRO_DIR + "/InstallerQtWidgetsProject.run",
|
|
||||||
});
|
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "force-clear",
|
|
||||||
"-targetPackage", "/package/;NONE",
|
|
||||||
"-prefix", "package;prefix",
|
|
||||||
"allowEmptyPackages",
|
|
||||||
"qif", "qifFromSystem",
|
|
||||||
"zip",
|
|
||||||
"deb"}, &comapareTree);
|
|
||||||
#else
|
|
||||||
bin = TestBinDir + "QtWidgetsProject.exe";
|
|
||||||
|
|
||||||
comapareTree = utils.createTree(
|
|
||||||
{
|
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.zip",
|
|
||||||
"./" + DISTRO_DIR + "/InstallerQtWidgetsProject.exe",
|
|
||||||
});
|
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "force-clear",
|
|
||||||
"-targetPackage", "/package/;NONE",
|
|
||||||
"-prefix", "package;prefix",
|
|
||||||
"allowEmptyPackages",
|
|
||||||
"qif", "qifFromSystem",
|
|
||||||
"zip"
|
|
||||||
}, &comapareTree);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void deploytest::testRunScripts() {
|
void deploytest::testRunScripts() {
|
||||||
@ -1175,7 +1013,7 @@ void deploytest::testOverridingDefaultTemplateDEB()
|
|||||||
|
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestOnlyC" + "," + TestBinDir + "QtWidgetsProject";
|
QString bin = TestBinDir + "TestOnlyC" + "," + TestBinDir + "TestCPPOnly";
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
QString qmake = TestQtDir + "bin/qmake";
|
||||||
|
|
||||||
QDir tempalteDir("temaplate");
|
QDir tempalteDir("temaplate");
|
||||||
@ -1205,6 +1043,8 @@ void deploytest::testOverridingDefaultTemplateDEB()
|
|||||||
comapareTree = utils.createTree(
|
comapareTree = utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/Test.deb",
|
"./" + DISTRO_DIR + "/Test.deb",
|
||||||
|
"./" + DISTRO_DIR + "/Test.deb.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
runTestParams(
|
runTestParams(
|
||||||
@ -1237,11 +1077,11 @@ void deploytest::testOverridingDefaultTemplateQIF() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
// Prepare bin and qmake values
|
// Prepare bin and qmake values
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestOnlyC" + "," + TestBinDir + "QtWidgetsProject";
|
QString bin = TestBinDir + "TestOnlyC" + "," + TestBinDir + "TestCPPOnly";
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
QString qmake = TestQtDir + "bin/qmake";
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "TestOnlyC.exe" + "," + TestBinDir + "QtWidgetsProject.exe";
|
QString bin = TestBinDir + "TestOnlyC.exe" + "," + TestBinDir + "TestCPPOnly.exe";
|
||||||
QString qmake = TestQtDir + "bin/qmake.exe";
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -1276,12 +1116,14 @@ void deploytest::testOverridingDefaultTemplateQIF() {
|
|||||||
comapareTree = utils.createTree(
|
comapareTree = utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/InstallerTest.run",
|
"./" + DISTRO_DIR + "/InstallerTest.run",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTest.run.md5",
|
||||||
});
|
});
|
||||||
|
|
||||||
#else
|
#else
|
||||||
comapareTree = utils.createTree(
|
comapareTree = utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/InstallerTest.exe",
|
"./" + DISTRO_DIR + "/InstallerTest.exe",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTest.exe.md5",
|
||||||
});
|
});
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -1389,13 +1231,11 @@ void deploytest::testIcons() {
|
|||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestOnlyC";
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
QStringList binMulti = {TestBinDir + "TestOnlyC" , TestBinDir + "TestQMLWidgets",
|
QStringList binMulti = {TestBinDir + "TestOnlyC" , TestBinDir + "TestCPPOnly"};
|
||||||
TestBinDir + "QtWidgetsProject"};
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "TestOnlyC.exe";
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
||||||
QStringList binMulti = {TestBinDir + "TestOnlyC.exe" , TestBinDir + "TestQMLWidgets.exe",
|
QStringList binMulti = {TestBinDir + "TestOnlyC.exe" , TestBinDir + "TestCPPOnly.exe"};
|
||||||
TestBinDir + "QtWidgetsProject.exe"};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1468,6 +1308,76 @@ void deploytest::testIcons() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void deploytest::testPathUtils() {
|
||||||
|
|
||||||
|
// test getName
|
||||||
|
QMap<QString, QString> cases = {
|
||||||
|
{"",""},
|
||||||
|
{"test","test"},
|
||||||
|
{"t","t"},
|
||||||
|
{"/","/"},
|
||||||
|
{"/test","test"},
|
||||||
|
{"/t","t"},
|
||||||
|
{"/test/","test"},
|
||||||
|
{"/t/","t"},
|
||||||
|
|
||||||
|
{"/check/test","test"},
|
||||||
|
{"/check/t","t"},
|
||||||
|
{"/check/test/","test"},
|
||||||
|
{"/check/t/","t"},
|
||||||
|
|
||||||
|
{"C:\\","C:"},
|
||||||
|
{"\\","/"},
|
||||||
|
{"\\test","test"},
|
||||||
|
{"\\t","t"},
|
||||||
|
{"\\test\\","test"},
|
||||||
|
{"\\t\\","t"},
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
for (auto it = cases.begin(); it != cases.end(); ++it) {
|
||||||
|
if (PathUtils::getName(it.key()) != it.value())
|
||||||
|
QVERIFY(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Result {
|
||||||
|
QString result;
|
||||||
|
QString newPath;
|
||||||
|
};
|
||||||
|
|
||||||
|
// test popItem
|
||||||
|
QMap<QString, Result> popItemCases = {
|
||||||
|
{"", {"", ""}},
|
||||||
|
{"test", {"test", ""}},
|
||||||
|
{"t", {"t", ""}},
|
||||||
|
{"/", {"/", ""}},
|
||||||
|
{"/test", {"test", "/"}},
|
||||||
|
{"/t", {"t", "/"}},
|
||||||
|
{"/test/", {"test", "/"}},
|
||||||
|
{"/t/", {"t", "/"} },
|
||||||
|
|
||||||
|
{"/check/test", {"test", "/check/"}},
|
||||||
|
{"/check/t", {"t", "/check/"}},
|
||||||
|
{"/check/test/", {"test", "/check/"}},
|
||||||
|
{"/check/t/", {"t", "/check/"}},
|
||||||
|
|
||||||
|
{"C:\\", {"C:", ""}},
|
||||||
|
{"\\", {"/", ""}},
|
||||||
|
{"\\test", {"test", "/"}},
|
||||||
|
{"\\t", {"t", "/"}},
|
||||||
|
{"\\test\\", {"test", "/"}},
|
||||||
|
{"\\t\\", {"t", "/"}},
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
for (auto it = popItemCases.begin(); it != popItemCases.end(); ++it) {
|
||||||
|
QString path = it.key();
|
||||||
|
QString result = PathUtils::popItem(path);
|
||||||
|
if (path != it.value().newPath || result != it.value().result)
|
||||||
|
QVERIFY(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void deploytest::testBinPrefix() {
|
void deploytest::testBinPrefix() {
|
||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
@ -1499,6 +1409,60 @@ void deploytest::testBinPrefix() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void deploytest::testMd5() {
|
||||||
|
// This test will check hashes
|
||||||
|
|
||||||
|
TestUtils utils;
|
||||||
|
|
||||||
|
#ifdef Q_OS_UNIX
|
||||||
|
QString bin = TestBinDir + "TestOnlyC";
|
||||||
|
auto outFile = "./" + DISTRO_DIR + "/InstallerTestOnlyC.run";
|
||||||
|
|
||||||
|
#else
|
||||||
|
QString bin = TestBinDir + "TestOnlyC.exe";
|
||||||
|
auto outFile = "./" + DISTRO_DIR + "/InstallerTestOnlyC.exe";
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
auto comapareTreeqif = utils.createTree(
|
||||||
|
{
|
||||||
|
outFile,
|
||||||
|
outFile + ".md5"
|
||||||
|
});
|
||||||
|
|
||||||
|
// Run deploy installer
|
||||||
|
runTestParams({"-bin", bin,
|
||||||
|
"force-clear",
|
||||||
|
"qif",
|
||||||
|
"qifFromSystem"}, &comapareTreeqif);
|
||||||
|
|
||||||
|
QFile file(outFile);
|
||||||
|
QVERIFY(file.open(QIODevice::ReadOnly));
|
||||||
|
auto binaryData = file.readAll();
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
file.setFileName(outFile + ".md5");
|
||||||
|
QVERIFY(file.open(QIODevice::ReadOnly));
|
||||||
|
auto hash = file.readAll();
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
// Compare hash sum of the installer with realy hash sum of the object.
|
||||||
|
QVERIFY(QCryptographicHash::hash(binaryData, QCryptographicHash::Md5).toHex() == hash);
|
||||||
|
|
||||||
|
|
||||||
|
comapareTreeqif = utils.createTree(
|
||||||
|
{
|
||||||
|
outFile,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Check noHashSum option. CQtDeployer must be skip calculating a hash sum of an installer.
|
||||||
|
runTestParams({"-bin", bin,
|
||||||
|
"force-clear",
|
||||||
|
"noHashSum",
|
||||||
|
"qif",
|
||||||
|
"qifFromSystem"}, &comapareTreeqif);
|
||||||
|
}
|
||||||
|
|
||||||
void deploytest::customTest() {
|
void deploytest::customTest() {
|
||||||
// runTestParams({"-confFile", "path",
|
// runTestParams({"-confFile", "path",
|
||||||
// "qifFromSystem"});
|
// "qifFromSystem"});
|
||||||
@ -1974,21 +1938,24 @@ void deploytest::testOverwriteWithPacking() {
|
|||||||
TestUtils utils;
|
TestUtils utils;
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
QString bin = TestBinDir + "TestOnlyC," + TestBinDir + "QtWidgetsProject";
|
QString bin = TestBinDir + "TestOnlyC," + TestBinDir + "TestCPPOnly";
|
||||||
|
|
||||||
#else
|
#else
|
||||||
QString bin = TestBinDir + "TestOnlyC.exe," + TestBinDir + "QtWidgetsProject.exe";
|
QString bin = TestBinDir + "TestOnlyC.exe," + TestBinDir + "TestCPPOnly.exe";
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
auto comapareTreeqif = utils.createTree(
|
auto comapareTreeqif = utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/InstallerTest.run",
|
"./" + DISTRO_DIR + "/InstallerTest.run",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTest.run.md5",
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
auto comapareTreeqif = utils.createTree(
|
auto comapareTreeqif = utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/InstallerTest.exe",
|
"./" + DISTRO_DIR + "/InstallerTest.exe",
|
||||||
|
"./" + DISTRO_DIR + "/InstallerTest.exe.md5",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -2008,23 +1975,21 @@ void deploytest::testextraData() {
|
|||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
auto comapareTree = utils.createTree(
|
auto comapareTree = utils.createTree(
|
||||||
{"./" + DISTRO_DIR + "/build/TestOnlyC",
|
{"./" + DISTRO_DIR + "/build/TestOnlyC",
|
||||||
|
"./" + DISTRO_DIR + "/build/TestCPPOnly",
|
||||||
"./" + DISTRO_DIR + "/build/QtWidgetsProject",
|
"./" + DISTRO_DIR + "/build/QtWidgetsProject",
|
||||||
"./" + DISTRO_DIR + "/build/TestQMLWidgets",
|
"./" + DISTRO_DIR + "/build/TestQMLWidgets",
|
||||||
"./" + DISTRO_DIR + "/build/basic"});
|
"./" + DISTRO_DIR + "/build/basic",
|
||||||
|
"./" + DISTRO_DIR + "/build/quicknanobrowser",
|
||||||
|
"./" + DISTRO_DIR + "/build/webui"});
|
||||||
#else
|
#else
|
||||||
auto comapareTree = utils.createTree(
|
auto comapareTree = utils.createTree(
|
||||||
{"./" + DISTRO_DIR + "/build/TestOnlyC.exe",
|
{"./" + DISTRO_DIR + "/build/TestOnlyC.exe",
|
||||||
|
"./" + DISTRO_DIR + "/build/TestCPPOnly.exe",
|
||||||
"./" + DISTRO_DIR + "/build/QtWidgetsProject.exe",
|
"./" + DISTRO_DIR + "/build/QtWidgetsProject.exe",
|
||||||
"./" + DISTRO_DIR + "/build/TestQMLWidgets.exe",
|
"./" + DISTRO_DIR + "/build/TestQMLWidgets.exe",
|
||||||
"./" + DISTRO_DIR + "/build/basic.exe"});
|
"./" + DISTRO_DIR + "/build/basic.exe"});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
|
||||||
comapareTree += utils.createTree(
|
|
||||||
{"./" + DISTRO_DIR + "/build/quicknanobrowser",
|
|
||||||
"./" + DISTRO_DIR + "/build/webui"});
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
runTestParams({"-extraData", TestBinDir, "clear",
|
runTestParams({"-extraData", TestBinDir, "clear",
|
||||||
"noCheckRPATH", "noCheckPATH", "noQt"}, &comapareTree);
|
"noCheckRPATH", "noCheckPATH", "noQt"}, &comapareTree);
|
||||||
@ -2050,54 +2015,44 @@ void deploytest::testConfFile() {
|
|||||||
auto comapareTree = utils.createTree(
|
auto comapareTree = utils.createTree(
|
||||||
{"./" + DISTRO_DIR + "/bin/TestOnlyC",
|
{"./" + DISTRO_DIR + "/bin/TestOnlyC",
|
||||||
"./" + DISTRO_DIR + "/bin/qt.conf",
|
"./" + DISTRO_DIR + "/bin/qt.conf",
|
||||||
"./" + DISTRO_DIR + "/bin/QtWidgetsProject",
|
"./" + DISTRO_DIR + "/TestOnlyC.sh"});
|
||||||
"./" + DISTRO_DIR + "/bin/TestQMLWidgets",
|
|
||||||
"./" + DISTRO_DIR + "/bin/basic",
|
|
||||||
"./" + DISTRO_DIR + "/TestOnlyC.sh",
|
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.sh",
|
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.sh",
|
|
||||||
"./" + DISTRO_DIR + "/basic.sh"});
|
|
||||||
#else
|
#else
|
||||||
auto comapareTree = utils.createTree(
|
auto comapareTree = utils.createTree(
|
||||||
{"./" + DISTRO_DIR + "/TestOnlyC.exe",
|
{"./" + DISTRO_DIR + "/TestOnlyC.exe",
|
||||||
"./" + DISTRO_DIR + "/TestOnlyC.bat",
|
"./" + DISTRO_DIR + "/TestOnlyC.bat",
|
||||||
"./" + DISTRO_DIR + "/qt.conf",
|
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.exe",
|
|
||||||
"./" + DISTRO_DIR + "/QtWidgetsProject.bat",
|
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.exe",
|
|
||||||
"./" + DISTRO_DIR + "/TestQMLWidgets.bat",
|
|
||||||
"./" + DISTRO_DIR + "/basic.exe",
|
|
||||||
"./" + DISTRO_DIR + "/basic.bat",
|
|
||||||
"./" + DISTRO_DIR + "/qt.conf"});
|
"./" + DISTRO_DIR + "/qt.conf"});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
comapareTree += utils.createTree(
|
runTestParams({"-bin", TestBinDir + "TestOnlyC", "clear" , "noCheckRPATH", "noCheckPATH", "noQt",
|
||||||
{"./" + DISTRO_DIR + "/bin/quicknanobrowser",
|
|
||||||
"./" + DISTRO_DIR + "/quicknanobrowser.sh",
|
|
||||||
"./" + DISTRO_DIR + "/bin/webui",
|
|
||||||
"./" + DISTRO_DIR + "/webui.sh"});
|
|
||||||
#endif
|
|
||||||
|
|
||||||
runTestParams({"-bin", TestBinDir, "clear" , "noCheckRPATH", "noCheckPATH", "noQt",
|
|
||||||
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
||||||
|
#else
|
||||||
|
runTestParams({"-bin", TestBinDir + "TestOnlyC.exe", "clear" , "noCheckRPATH", "noCheckPATH", "noQt",
|
||||||
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
QVERIFY(QFile::exists(TestBinDir + "/TestConf.json"));
|
QVERIFY(QFile::exists(TestBinDir + "/TestConf.json"));
|
||||||
QFile::remove(TestBinDir + "/TestConf.json");
|
QFile::remove(TestBinDir + "/TestConf.json");
|
||||||
|
|
||||||
comapareTree -= utils.createTree(
|
|
||||||
{"./" + DISTRO_DIR + "/bin/quicknanobrowser",
|
|
||||||
"./" + DISTRO_DIR + "/quicknanobrowser.sh",
|
|
||||||
"./" + DISTRO_DIR + "/bin/webui",
|
|
||||||
"./" + DISTRO_DIR + "/webui.sh"});
|
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
runTestParams({"-bin", TestBinDir + "TestOnlyC," + TestBinDir + "QtWidgetsProject," + TestBinDir + "TestQMLWidgets",
|
comapareTree += utils.createTree(
|
||||||
|
{"./" + DISTRO_DIR + "/bin/TestCPPOnly",
|
||||||
|
"./" + DISTRO_DIR + "/TestCPPOnly.sh"});
|
||||||
|
#else
|
||||||
|
comapareTree += utils.createTree(
|
||||||
|
{"./" + DISTRO_DIR + "/TestCPPOnly.exe",
|
||||||
|
"./" + DISTRO_DIR + "/TestCPPOnly.bat"});
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Q_OS_UNIX
|
||||||
|
runTestParams({"-bin", TestBinDir + "TestOnlyC," + TestBinDir + "TestCPPOnly",
|
||||||
"clear", "noCheckRPATH", "noCheckPATH", "noQt",
|
"clear", "noCheckRPATH", "noCheckPATH", "noQt",
|
||||||
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
||||||
#else
|
#else
|
||||||
runTestParams({"-bin", TestBinDir + "TestOnlyC.exe," + TestBinDir + "QtWidgetsProject.exe," + TestBinDir + "TestQMLWidgets.exe",
|
runTestParams({"-bin", TestBinDir + "TestOnlyC.exe," + TestBinDir + "TestCPPOnly.exe",
|
||||||
"clear" , "-libDir", "L:/never/absalut/path", "noCheckPATH", "noQt",
|
"clear" , "-libDir", "L:/never/absalut/path", "noCheckPATH", "noQt",
|
||||||
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
"-confFile", TestBinDir + "/TestConf.json"}, &comapareTree);
|
||||||
#endif
|
#endif
|
||||||
@ -2116,9 +2071,7 @@ void deploytest::testConfFile() {
|
|||||||
|
|
||||||
QVERIFY(data.contains("\"bin\": ["));
|
QVERIFY(data.contains("\"bin\": ["));
|
||||||
QVERIFY(data.contains("./TestOnlyC"));
|
QVERIFY(data.contains("./TestOnlyC"));
|
||||||
QVERIFY(data.contains("./QtWidgetsProject"));
|
QVERIFY(data.contains("./TestCPPOnly"));
|
||||||
QVERIFY(data.contains("./TestQMLWidgets"));
|
|
||||||
// QVERIFY(data.contains("\"libDir\": \"/never/absalut/path/\""));
|
|
||||||
|
|
||||||
QVERIFY(data.contains("\"clear\": true"));
|
QVERIFY(data.contains("\"clear\": true"));
|
||||||
|
|
||||||
@ -2133,8 +2086,7 @@ void deploytest::testConfFile() {
|
|||||||
|
|
||||||
QVERIFY(data.contains("\"bin\": ["));
|
QVERIFY(data.contains("\"bin\": ["));
|
||||||
QVERIFY(data.contains("./TestOnlyC.exe"));
|
QVERIFY(data.contains("./TestOnlyC.exe"));
|
||||||
QVERIFY(data.contains("./QtWidgetsProject.exe"));
|
QVERIFY(data.contains("./TestCPPOnly.exe"));
|
||||||
QVERIFY(data.contains("./TestQMLWidgets.exe"));
|
|
||||||
QVERIFY(data.contains("\"libDir\": \"L:/never/absalut/path\""));
|
QVERIFY(data.contains("\"libDir\": \"L:/never/absalut/path\""));
|
||||||
|
|
||||||
QVERIFY(data.contains("\"clear\": true"));
|
QVERIFY(data.contains("\"clear\": true"));
|
||||||
@ -2155,11 +2107,11 @@ void deploytest::testConfFile() {
|
|||||||
|
|
||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
runTestParams({"-bin", TestBinDir + "TestOnlyC," + TestBinDir + "QtWidgetsProject," + TestBinDir + "TestQMLWidgets",
|
runTestParams({"-bin", TestBinDir + "TestOnlyC," + TestBinDir + "TestCPPOnly",
|
||||||
"clear" , "noCheckRPATH", "noCheckPATH", "noQt",
|
"clear" , "noCheckRPATH", "noCheckPATH", "noQt",
|
||||||
"-confFile", TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json"}, &comapareTree);
|
"-confFile", TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json"}, &comapareTree);
|
||||||
#else
|
#else
|
||||||
runTestParams({"-bin", TestBinDir + "TestOnlyC.exe," + TestBinDir + "QtWidgetsProject.exe," + TestBinDir + "TestQMLWidgets.exe",
|
runTestParams({"-bin", TestBinDir + "TestOnlyC.exe," + TestBinDir + "TestCPPOnly.exe",
|
||||||
"clear" , "noCheckPATH", "noQt",
|
"clear" , "noCheckPATH", "noQt",
|
||||||
"-confFile", TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json"}, &comapareTree);
|
"-confFile", TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json"}, &comapareTree);
|
||||||
#endif
|
#endif
|
||||||
@ -2177,8 +2129,7 @@ void deploytest::testConfFile() {
|
|||||||
|
|
||||||
QVERIFY(data.contains("\"bin\": ["));
|
QVERIFY(data.contains("\"bin\": ["));
|
||||||
QVERIFY(data.contains("./../../../../../build/TestOnlyC"));
|
QVERIFY(data.contains("./../../../../../build/TestOnlyC"));
|
||||||
QVERIFY(data.contains("./../../../../../build/QtWidgetsProject"));
|
QVERIFY(data.contains("./../../../../../build/TestCPPOnly"));
|
||||||
QVERIFY(data.contains("./../../../../../build/TestQMLWidgets"));
|
|
||||||
|
|
||||||
QVERIFY(data.contains("\"clear\": true"));
|
QVERIFY(data.contains("\"clear\": true"));
|
||||||
QString qmake = TestQtDir + "bin/qmake";
|
QString qmake = TestQtDir + "bin/qmake";
|
||||||
@ -2187,8 +2138,7 @@ void deploytest::testConfFile() {
|
|||||||
|
|
||||||
QVERIFY(data.contains("\"bin\": ["));
|
QVERIFY(data.contains("\"bin\": ["));
|
||||||
QVERIFY(data.contains("./../../../../../build/TestOnlyC.exe"));
|
QVERIFY(data.contains("./../../../../../build/TestOnlyC.exe"));
|
||||||
QVERIFY(data.contains("./../../../../../build/QtWidgetsProject.exe"));
|
QVERIFY(data.contains("./../../../../../build/TestCPPOnly.exe"));
|
||||||
QVERIFY(data.contains("./../../../../../build/TestQMLWidgets.exe"));
|
|
||||||
|
|
||||||
QVERIFY(data.contains("\"clear\": true"));
|
QVERIFY(data.contains("\"clear\": true"));
|
||||||
QString qmake = TestQtDir + "bin/qmake.exe";
|
QString qmake = TestQtDir + "bin/qmake.exe";
|
||||||
@ -2199,17 +2149,6 @@ void deploytest::testConfFile() {
|
|||||||
QVERIFY(QuasarAppUtils::Params::isEndable("clear"));
|
QVERIFY(QuasarAppUtils::Params::isEndable("clear"));
|
||||||
QVERIFY(QuasarAppUtils::Params::isEndable("bin"));
|
QVERIFY(QuasarAppUtils::Params::isEndable("bin"));
|
||||||
|
|
||||||
comapareTree += TestModule.qtLibs();
|
|
||||||
comapareTree += TestModule.qmlLibs();
|
|
||||||
|
|
||||||
runTestParams({"-confFile", TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json",
|
|
||||||
"-qmake", qmake,
|
|
||||||
"-qmlDir", TestBinDir + "/../TestQMLWidgets",
|
|
||||||
}, &comapareTree);
|
|
||||||
|
|
||||||
QVERIFY(QuasarAppUtils::Params::isEndable("clear"));
|
|
||||||
QVERIFY(QuasarAppUtils::Params::isEndable("bin"));
|
|
||||||
|
|
||||||
QFile::remove(TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json");
|
QFile::remove(TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json");
|
||||||
|
|
||||||
// Test generar string in confFile
|
// Test generar string in confFile
|
||||||
@ -2282,15 +2221,13 @@ void deploytest::testConfFile() {
|
|||||||
comapareTree = TestModule.onlyC(DISTRO_DIR + "/Dstro1") +
|
comapareTree = TestModule.onlyC(DISTRO_DIR + "/Dstro1") +
|
||||||
TestModule.qtLibs(DISTRO_DIR + "/Dstro2");
|
TestModule.qtLibs(DISTRO_DIR + "/Dstro2");
|
||||||
|
|
||||||
#ifdef Q_OS_LINUX
|
|
||||||
auto qmlDir = TestBinDir + "/../";
|
|
||||||
#else
|
|
||||||
auto qmlDir = TestBinDir + "/../TestQMLWidgets";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
runTestParams({"-confFile", file},
|
runTestParams({"-confFile", file},
|
||||||
&comapareTree);
|
&comapareTree);
|
||||||
|
|
||||||
|
QFile::remove(TestBinDir + "/TestConf.json");
|
||||||
|
QFile::remove(TestBinDir + "/../folder/For/Testing/Deploy/File/TestConf.json");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void deploytest::testPackages() {
|
void deploytest::testPackages() {
|
||||||
@ -2938,12 +2875,11 @@ void deploytest::testOutDirs() {
|
|||||||
auto runScript = file.readAll();
|
auto runScript = file.readAll();
|
||||||
file.close();
|
file.close();
|
||||||
|
|
||||||
QVERIFY(runScript.contains("Prefix= ./../"));
|
QVERIFY(runScript.contains("Libraries= ./../lolLib/"));
|
||||||
QVERIFY(runScript.contains("Libraries= ./lolLib/"));
|
QVERIFY(runScript.contains("Plugins= ./../p/"));
|
||||||
QVERIFY(runScript.contains("Plugins= ./p/"));
|
QVERIFY(runScript.contains("Imports= ./../q/"));
|
||||||
QVERIFY(runScript.contains("Imports= ./q/"));
|
QVERIFY(runScript.contains("Translations= ./../lolTr/"));
|
||||||
QVERIFY(runScript.contains("Translations= ./lolTr/"));
|
QVERIFY(runScript.contains("Qml2Imports= ./../q/"));
|
||||||
QVERIFY(runScript.contains("Qml2Imports= ./q/"));
|
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
|
|
||||||
|
15
doxygen.conf
15
doxygen.conf
@ -33,7 +33,6 @@ DOXYFILE_ENCODING = UTF-8
|
|||||||
# The default value is: My Project.
|
# The default value is: My Project.
|
||||||
|
|
||||||
PROJECT_NAME = CQtDeployer
|
PROJECT_NAME = CQtDeployer
|
||||||
|
|
||||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
|
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
|
||||||
# could be handy for archiving the generated documentation or if some version
|
# could be handy for archiving the generated documentation or if some version
|
||||||
# control system is used.
|
# control system is used.
|
||||||
@ -51,8 +50,7 @@ PROJECT_BRIEF =
|
|||||||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||||
# the logo to the output directory.
|
# the logo to the output directory.
|
||||||
|
|
||||||
PROJECT_LOGO =
|
PROJECT_LOGO = "res/CQtDeployer logo_web.png"
|
||||||
|
|
||||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||||
# into which the generated documentation will be written. If a relative path is
|
# into which the generated documentation will be written. If a relative path is
|
||||||
# entered, it will be relative to the location where doxygen was started. If
|
# entered, it will be relative to the location where doxygen was started. If
|
||||||
@ -790,10 +788,9 @@ WARN_LOGFILE =
|
|||||||
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||||
# Note: If this tag is empty the current directory is searched.
|
# Note: If this tag is empty the current directory is searched.
|
||||||
|
|
||||||
INPUT = Deploy \
|
INPUT = ./Deploy \
|
||||||
CQtDeployer \
|
./md \
|
||||||
doc \
|
./README.md
|
||||||
README.md
|
|
||||||
|
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
@ -1134,7 +1131,7 @@ GENERATE_HTML = YES
|
|||||||
# The default directory is: html.
|
# The default directory is: html.
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
HTML_OUTPUT = html
|
HTML_OUTPUT = .
|
||||||
|
|
||||||
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
|
||||||
# generated HTML page (for example: .htm, .php, .asp).
|
# generated HTML page (for example: .htm, .php, .asp).
|
||||||
@ -1395,7 +1392,7 @@ QCH_FILE =
|
|||||||
# The default value is: org.doxygen.Project.
|
# The default value is: org.doxygen.Project.
|
||||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||||
|
|
||||||
QHP_NAMESPACE = QuasarAppj
|
QHP_NAMESPACE = QuasarApp
|
||||||
|
|
||||||
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
|
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
|
||||||
# Help Project output. For more information please see Qt Help Project / Virtual
|
# Help Project output. For more information please see Qt Help Project / Virtual
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
# Release of the C ++ / Qt and QML application deployment utility CQtDeployer v1.5.0
|
# Release of the C++/Qt and QML application deployment utility CQtDeployer v1.5.0
|
||||||
|
|
||||||
This is the first major update in 2021. CQtDeployer 1.5 contains many useful improvements and help files. The biggest improvements are the addition of the ability to package deb packages, and the ability to use your own packaging template for the qt install framework.
|
This is the first major update in 2021. CQtDeployer 1.5 contains many useful improvements and help files. The biggest improvements are the addition of the ability to package deb packages, and the ability to use your own packaging template for the qt install framework.
|
||||||
|
|
||||||
## Complete list of all changes
|
## Complete list of all changes
|
||||||
|
|
||||||
## CQtDeployer 1.5.0
|
## CQtDeployer 1.5.0
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
|
|
||||||
- Added new theme of qif installer "quasarDark".
|
- Added new theme of qif installer "quasarDark".
|
||||||
- Added support of work with custom template for qif option.
|
- Added support of work with custom template for qif option.
|
||||||
- Added support of debian packages with.
|
- Added support of debian packages.
|
||||||
- Added support icons for targets. now the icon option work with targets but not packages.
|
- Added support icons for targets. now the icon option work with targets but not packages.
|
||||||
- Added support of the control custom translation files.
|
- Added support of the control custom translation files.
|
||||||
- Added support the deploy nonexecutable data. (extraData option)
|
- Added support the deploy nonexecutable data. (extraData option)
|
||||||
@ -18,21 +20,28 @@ This is the first major update in 2021. CQtDeployer 1.5 contains many useful imp
|
|||||||
- Added support create a qif installer using custom template
|
- Added support create a qif installer using custom template
|
||||||
- Added command of init default qif of deb template (getDefaulttemplate)
|
- Added command of init default qif of deb template (getDefaulttemplate)
|
||||||
- Added support of import custom launch scripts
|
- Added support of import custom launch scripts
|
||||||
- Added support qt installer framework 4.0
|
- Added support of md5 packages hashes
|
||||||
|
- Added support of Qt6.1
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
- Fixed stability for the deploySystem option on windows
|
- Fixed stability for the deploySystem option on windows
|
||||||
- Fixed verbose log.
|
- Fixed verbose log.
|
||||||
- Fixed general output log.
|
- Fixed general output log.
|
||||||
|
- Fixed typo errors in log.
|
||||||
- Fixed crossdeploy of the arm distributions.
|
- Fixed crossdeploy of the arm distributions.
|
||||||
|
- Fixed deploy Qt6 qml
|
||||||
|
- Fixed powershell commands on Windows
|
||||||
- bug fixes and improvements.
|
- bug fixes and improvements.
|
||||||
|
|
||||||
|
|
||||||
### New Envirement Variables
|
### New Envirement Variables
|
||||||
|
|
||||||
- CQT_RUN_FILE - This variable contains path to the run script of the using application.
|
- CQT_RUN_FILE - This variable contains path to the run script of the using application.
|
||||||
- CQT_PKG_ROOT - This variable contains path to root of the current package.
|
- CQT_PKG_ROOT - This variable contains path to root of the current package.
|
||||||
|
|
||||||
### New parameters
|
### New parameters
|
||||||
|
|
||||||
- zip - create a ZIP archive for deployable programs
|
- zip - create a ZIP archive for deployable programs
|
||||||
- deb - Create the deb package for deployment programm
|
- deb - Create the deb package for deployment programm
|
||||||
- homepage - Sets the homepage url for a package
|
- homepage - Sets the homepage url for a package
|
||||||
@ -45,30 +54,103 @@ This is the first major update in 2021. CQtDeployer 1.5 contains many useful imp
|
|||||||
- prefix - Sets the prefix for the package relatively a target directory
|
- prefix - Sets the prefix for the package relatively a target directory
|
||||||
- homePage - Sets the homepage url for a package
|
- homePage - Sets the homepage url for a package
|
||||||
- binPrefix - Sets prefix for bin option.
|
- binPrefix - Sets prefix for bin option.
|
||||||
|
- noHashSum - Disables campute hashes of packages
|
||||||
|
|
||||||
### Deprecated and removed options
|
### Deprecated and removed options
|
||||||
|
|
||||||
- deploySystem-with-libc - instead of this option use the deploySystem option.
|
- deploySystem-with-libc - instead of this option use the deploySystem option.
|
||||||
- allQmlDependes - instead of this option use the qmlDir option.
|
- allQmlDependes - instead of this option use the qmlDir option.
|
||||||
|
|
||||||
|
|
||||||
## Detailed analysis of the most interesting changes.
|
## Detailed analysis of the most interesting changes.
|
||||||
|
|
||||||
Create a independet deb packages. This features is very conveniently if you want to create server application.
|
### Debian pacakges
|
||||||
|
This feature is very conveniently if you want to create server application.
|
||||||
For example i need to create simple server for my simple game.
|
For example i need to create simple server for my simple game.
|
||||||
And my steps:
|
And my steps:
|
||||||
* build my application in the release mode.
|
* build my application in the release mode.
|
||||||
* run cqtdeployer with deb option.
|
* run cqtdeployer with deb option.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
cqtdeployer -bin mySimpleServer deb -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
cqtdeployer -bin mySimpleServer deb -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||||
```
|
```
|
||||||
Ьy SimpleServer depends only on qt, so it was enough for me to specify only the path to qmake for my application.
|
Ьy SimpleServer depends only on qt, so it was enough for me to specify only the path to qmake for my application.
|
||||||
|
|
||||||
It is all!!!. And i get the workly deb package.
|
It is all!!!. And i get the workly deb package.
|
||||||
|
By Default CQtDeployer create an independet debian packages.
|
||||||
So lets see what contains the generated deb package.
|
|
||||||
|
|
||||||
|
|
||||||
|
### Zip arrhives
|
||||||
|
This feature allow compress your distribution pacakges to zip arrhive.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```bash
|
||||||
|
cqtdeployer -bin mySimpleServer zip -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom Qt Installer Framework tempaltes.
|
||||||
|
|
||||||
|
Now you can override default template of the cqtdeployer. To do this, you must pass the path to your template to the qif parameter.
|
||||||
|
|
||||||
|
```
|
||||||
|
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
||||||
|
```
|
||||||
|
|
||||||
|
### Template
|
||||||
|
The qif template should contain 2 folders:
|
||||||
|
* packages
|
||||||
|
* config
|
||||||
|
|
||||||
|
### Attention
|
||||||
|
The name of the packages in the packages folder must match the names of the packages during deployment.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
``` json
|
||||||
|
"targetPackage": [
|
||||||
|
[
|
||||||
|
"myCustomInstaller",
|
||||||
|
"tar1"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
.
|
||||||
|
├── config
|
||||||
|
│ ├── config.xml
|
||||||
|
│ └── style.qss
|
||||||
|
└── packages
|
||||||
|
└── myCustomInstaller
|
||||||
|
└── meta
|
||||||
|
├── installscript.qs
|
||||||
|
└── package.xml
|
||||||
|
|
||||||
|
4 directories, 4 files
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
If the folder names do not match the package names then CQtDeployer will use the standard QIF package.
|
||||||
|
|
||||||
|
If you have only one package then you can use the **name** option for set name the application.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Do not forget to rename the your package folder to the packaga name of the name option.
|
||||||
|
|
||||||
|
|
||||||
# To be completed
|
```bash
|
||||||
|
.
|
||||||
|
├── config
|
||||||
|
│ ├── config.xml
|
||||||
|
│ └── style.qss
|
||||||
|
└── packages
|
||||||
|
└── myCustomInstaller << "This is folder of the your package"
|
||||||
|
└── meta
|
||||||
|
├── installscript.qs
|
||||||
|
└── package.xml
|
||||||
|
|
||||||
|
4 directories, 4 files
|
||||||
|
|
||||||
|
```
|
@ -1,10 +1,12 @@
|
|||||||
# Chnage log for all versions of the CQtDeployer.
|
# Chnage log for all versions of the CQtDeployer.
|
||||||
|
|
||||||
## CQtDeployer 1.5.0
|
## CQtDeployer 1.5.0
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
|
|
||||||
- Added new theme of qif installer "quasarDark".
|
- Added new theme of qif installer "quasarDark".
|
||||||
- Added support of work with custom template for qif option.
|
- Added support of work with custom template for qif option.
|
||||||
- Added support of debian packages with.
|
- Added support of debian packages.
|
||||||
- Added support icons for targets. now the icon option work with targets but not packages.
|
- Added support icons for targets. now the icon option work with targets but not packages.
|
||||||
- Added support of the control custom translation files.
|
- Added support of the control custom translation files.
|
||||||
- Added support the deploy nonexecutable data. (extraData option)
|
- Added support the deploy nonexecutable data. (extraData option)
|
||||||
@ -14,20 +16,28 @@
|
|||||||
- Added support create a qif installer using custom template
|
- Added support create a qif installer using custom template
|
||||||
- Added command of init default qif of deb template (getDefaulttemplate)
|
- Added command of init default qif of deb template (getDefaulttemplate)
|
||||||
- Added support of import custom launch scripts
|
- Added support of import custom launch scripts
|
||||||
|
- Added support of md5 packages hashes
|
||||||
|
- Added support of Qt6.1
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
- Fixed stability for the deploySystem option on windows
|
- Fixed stability for the deploySystem option on windows
|
||||||
- Fixed verbose log.
|
- Fixed verbose log.
|
||||||
- Fixed general output log.
|
- Fixed general output log.
|
||||||
|
- Fixed typo errors in log.
|
||||||
- Fixed crossdeploy of the arm distributions.
|
- Fixed crossdeploy of the arm distributions.
|
||||||
|
- Fixed deploy Qt6 qml
|
||||||
|
- Fixed powershell commands on Windows
|
||||||
- bug fixes and improvements.
|
- bug fixes and improvements.
|
||||||
|
|
||||||
|
|
||||||
### New Envirement Variables
|
### New Envirement Variables
|
||||||
|
|
||||||
- CQT_RUN_FILE - This variable contains path to the run script of the using application.
|
- CQT_RUN_FILE - This variable contains path to the run script of the using application.
|
||||||
- CQT_PKG_ROOT - This variable contains path to root of the current package.
|
- CQT_PKG_ROOT - This variable contains path to root of the current package.
|
||||||
|
|
||||||
### New parameters
|
### New parameters
|
||||||
|
|
||||||
- zip - create a ZIP archive for deployable programs
|
- zip - create a ZIP archive for deployable programs
|
||||||
- deb - Create the deb package for deployment programm
|
- deb - Create the deb package for deployment programm
|
||||||
- homepage - Sets the homepage url for a package
|
- homepage - Sets the homepage url for a package
|
||||||
@ -40,33 +50,44 @@
|
|||||||
- prefix - Sets the prefix for the package relatively a target directory
|
- prefix - Sets the prefix for the package relatively a target directory
|
||||||
- homePage - Sets the homepage url for a package
|
- homePage - Sets the homepage url for a package
|
||||||
- binPrefix - Sets prefix for bin option.
|
- binPrefix - Sets prefix for bin option.
|
||||||
|
- noHashSum - Disables campute hashes of packages
|
||||||
|
|
||||||
### Deprecated and removed options
|
### Deprecated and removed options
|
||||||
|
|
||||||
- deploySystem-with-libc - instead of this option use the deploySystem option.
|
- deploySystem-with-libc - instead of this option use the deploySystem option.
|
||||||
- allQmlDependes - instead of this option use the qmlDir option.
|
- allQmlDependes - instead of this option use the qmlDir option.
|
||||||
|
|
||||||
## CQtDeployer 1.5.0 Alpha
|
## CQtDeployer 1.5.0 Alpha
|
||||||
|
|
||||||
### Corrections
|
### Corrections
|
||||||
|
|
||||||
- bug fixes and improvements.
|
- bug fixes and improvements.
|
||||||
|
|
||||||
### New Features
|
### New Features
|
||||||
|
|
||||||
- Added a new Theme for qif installer "quasarDark".
|
- Added a new Theme for qif installer "quasarDark".
|
||||||
|
|
||||||
### New options
|
### New options
|
||||||
|
|
||||||
- zip - create the ZIP arhive for deployement programm
|
- zip - create the ZIP arhive for deployement programm
|
||||||
|
|
||||||
|
|
||||||
## CQtDeployer 1.4.7
|
## CQtDeployer 1.4.7
|
||||||
|
|
||||||
### Corrections
|
### Corrections
|
||||||
|
|
||||||
- Fixed deploy the qxcb plugin. #438
|
- Fixed deploy the qxcb plugin. #438
|
||||||
- Fixed deploy the qtGui module. #446
|
- Fixed deploy the qtGui module. #446
|
||||||
|
|
||||||
### New Features
|
### New Features
|
||||||
|
|
||||||
- Added support of Qt6 #437
|
- Added support of Qt6 #437
|
||||||
- Added support of Qt installer Framework 4 (with improved command line interface experience) #436
|
- Added support of Qt installer Framework 4 (with improved command line interface experience) #436
|
||||||
|
|
||||||
## CQtDeployer 1.4.6
|
## CQtDeployer 1.4.6
|
||||||
|
|
||||||
### Corrections
|
### Corrections
|
||||||
|
|
||||||
- Fixed deploy sql drivers #367
|
- Fixed deploy sql drivers #367
|
||||||
- Fixed algorithm of deploy libraryes. #423 #371
|
- Fixed algorithm of deploy libraryes. #423 #371
|
||||||
- Fixed working with a qt from the linux system repository. (classic instaler only) #422
|
- Fixed working with a qt from the linux system repository. (classic instaler only) #422
|
||||||
@ -76,10 +97,13 @@
|
|||||||
- Removed deprecated option extractPlugins. #371
|
- Removed deprecated option extractPlugins. #371
|
||||||
|
|
||||||
### New options
|
### New options
|
||||||
|
|
||||||
- noQt - Ignore the error of initialize of a qmake. Use only if your application does not use the qt framework.
|
- noQt - Ignore the error of initialize of a qmake. Use only if your application does not use the qt framework.
|
||||||
|
|
||||||
## CQtDeployer 1.4.5
|
## CQtDeployer 1.4.5
|
||||||
|
|
||||||
### Corrections
|
### Corrections
|
||||||
|
|
||||||
- Optimized project deployment performance. 60% faster.
|
- Optimized project deployment performance. 60% faster.
|
||||||
- Optimized output size of distributions. Size reduced by 25%.
|
- Optimized output size of distributions. Size reduced by 25%.
|
||||||
- Fixed display of shortcuts after installing deployed applications.
|
- Fixed display of shortcuts after installing deployed applications.
|
||||||
@ -88,6 +112,7 @@
|
|||||||
- Minor bug fixes and improvements.
|
- Minor bug fixes and improvements.
|
||||||
|
|
||||||
### New Features
|
### New Features
|
||||||
|
|
||||||
- Added a new deployment plugin management system.
|
- Added a new deployment plugin management system.
|
||||||
|
|
||||||
### New options
|
### New options
|
@ -43,3 +43,44 @@ Or you can describe packages in [configuration file](DeployConfigFile.md)
|
|||||||
"deb": true
|
"deb": true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Custom Template for DEB
|
||||||
|
|
||||||
|
You can create a own Template fo the debian pacakges.
|
||||||
|
|
||||||
|
### The debian pacakge structure:
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
└── Debian templates
|
||||||
|
├── debPacakge1
|
||||||
|
│ └── DEBIAN
|
||||||
|
│ ├── control
|
||||||
|
│ ├── postinst
|
||||||
|
│ └── prerm
|
||||||
|
└── debPacakge2
|
||||||
|
└── DEBIAN
|
||||||
|
├── control
|
||||||
|
├── postinst
|
||||||
|
└── prerm
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
For include your templates into your destribution you need to add path of the Debian templates folder into deployConfig.json
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"targetPackage": [
|
||||||
|
[
|
||||||
|
"debPacakge1",
|
||||||
|
"tar1"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"debPacakge2",
|
||||||
|
"tar2"
|
||||||
|
],
|
||||||
|
],
|
||||||
|
"deb": "./Debian templates"
|
||||||
|
}
|
||||||
|
```
|
@ -67,6 +67,8 @@ cqtdeployer -option1 value1 -option2 list, of, values flag1 flag2 flag3
|
|||||||
| noQt | Ignors the error of initialize of a qmake. Use only if your application does not use the qt framework. |
|
| noQt | Ignors the error of initialize of a qmake. Use only if your application does not use the qt framework. |
|
||||||
| allowEmptyPackages | Allows configure the empty packages. |
|
| allowEmptyPackages | Allows configure the empty packages. |
|
||||||
| getDefaultTemplate | Extracts defaults deb or qif templates. For more information see the extracting default templates [page](ExtractDefaultsTemplates.md) |
|
| getDefaultTemplate | Extracts defaults deb or qif templates. For more information see the extracting default templates [page](ExtractDefaultsTemplates.md) |
|
||||||
|
| noHashSum | Disable computation of a packages hash sum |
|
||||||
|
|
||||||
|
|
||||||
### Deploy options
|
### Deploy options
|
||||||
|
|
@ -11,7 +11,7 @@ The qif option invoke with path to custo qt installer template or with default i
|
|||||||
|
|
||||||
#### For example:
|
#### For example:
|
||||||
|
|
||||||
``` bash
|
```bash
|
||||||
cqtdeployer ... qif
|
cqtdeployer ... qif
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ Or you can describe packages in [configuration file](DeployConfigFile.md)
|
|||||||
# Custom Template for QIF
|
# Custom Template for QIF
|
||||||
Starting with CQtDeployer Version 1.5 you can use your own installer template. To do this, you must pass the path to your template to the qif parameter.
|
Starting with CQtDeployer Version 1.5 you can use your own installer template. To do this, you must pass the path to your template to the qif parameter.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ The qif template should contain 2 folders:
|
|||||||
The name of the packages in the packages folder must match the names of the packages during deployment.
|
The name of the packages in the packages folder must match the names of the packages during deployment.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
``` json
|
```json
|
||||||
"targetPackage": [
|
"targetPackage": [
|
||||||
[
|
[
|
||||||
"myCustomInstaller",
|
"myCustomInstaller",
|
||||||
@ -69,7 +69,7 @@ For example:
|
|||||||
],
|
],
|
||||||
```
|
```
|
||||||
|
|
||||||
``` bash
|
```bash
|
||||||
.
|
.
|
||||||
├── config
|
├── config
|
||||||
│ ├── config.xml
|
│ ├── config.xml
|
||||||
@ -88,14 +88,14 @@ If the folder names do not match the package names then CQtDeployer will use the
|
|||||||
|
|
||||||
If you have only one package then you can use the **name** option for set name the application.
|
If you have only one package then you can use the **name** option for set name the application.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Do not forget to rename the your package folder to the packaga name of the name option.
|
#### Do not forget to rename the your package folder to the packaga name of the name option.
|
||||||
|
|
||||||
|
|
||||||
``` bash
|
```bash
|
||||||
.
|
.
|
||||||
├── config
|
├── config
|
||||||
│ ├── config.xml
|
│ ├── config.xml
|
@ -69,6 +69,7 @@ cqtdeployer -option1 value1 -option2 list,of,values flag1 flag2 flag3
|
|||||||
| noQt | Игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует платформу qt. |
|
| noQt | Игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует платформу qt. |
|
||||||
| allowEmptyPackages | Разрешите настраивать пустые пакеты. |
|
| allowEmptyPackages | Разрешите настраивать пустые пакеты. |
|
||||||
| getDefaultTemplate | Извлекает deb или qif шаблоны по умолчанию. Для получения дополнительной информации см. [Страницу](ExtractDefaultsTemplates.md) извлечения шаблонов по умолчанию. |
|
| getDefaultTemplate | Извлекает deb или qif шаблоны по умолчанию. Для получения дополнительной информации см. [Страницу](ExtractDefaultsTemplates.md) извлечения шаблонов по умолчанию. |
|
||||||
|
| noHashSum | Отключить вычисление хеш-суммы пакетов |
|
||||||
|
|
||||||
### Параметры развертывания:
|
### Параметры развертывания:
|
||||||
|
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
@ -1,5 +1,5 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=1.5.0.31
|
Version=1.5.0.34
|
||||||
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.31
|
X-GNOME-Bugzilla-Version=1.5.0.34
|
||||||
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.31' # just for humans, typically '1.2+git' or '1.3.2'
|
version: '1.5.0.34' # 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.
|
||||||
|
1
test.pri
1
test.pri
@ -8,7 +8,6 @@ contains(QMAKE_HOST.os, Linux):{
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEPLOYER=cqtdeployer
|
DEPLOYER=cqtdeployer
|
||||||
win32:DEPLOYER=$$(cqtdeployer)
|
|
||||||
|
|
||||||
test.commands =
|
test.commands =
|
||||||
deployTest.commands = $$DEPLOYER -bin $$exec clear -qmake $$QMAKE_BIN -targetDir $$PWD/deployTests -libDir $$PWD -recursiveDepth 4
|
deployTest.commands = $$DEPLOYER -bin $$exec clear -qmake $$QMAKE_BIN -targetDir $$PWD/deployTests -libDir $$PWD -recursiveDepth 4
|
||||||
|
10
tests/TestCPPOnly/TestCPPOnly.pro
Normal file
10
tests/TestCPPOnly/TestCPPOnly.pro
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
TEMPLATE = app
|
||||||
|
CONFIG += console c++11
|
||||||
|
CONFIG -= app_bundle
|
||||||
|
CONFIG -= qt
|
||||||
|
CONFIG += release
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
main.cpp
|
||||||
|
|
||||||
|
DESTDIR="$$PWD/../build"
|
5
tests/TestCPPOnly/conf.qrc
Normal file
5
tests/TestCPPOnly/conf.qrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/qt/etc">
|
||||||
|
<file>qt.conf</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
9
tests/TestCPPOnly/main.cpp
Normal file
9
tests/TestCPPOnly/main.cpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
cout << "TEST DONE (ONLY_C)" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
0
tests/TestCPPOnly/qt.conf
Normal file
0
tests/TestCPPOnly/qt.conf
Normal file
Loading…
x
Reference in New Issue
Block a user