mirror of
https://github.com/QuasarApp/CQtDeployer.git
synced 2025-05-18 20:39:36 +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
|
||||||
|
|
||||||
|
if [ ! -e /usr/bin/"${app,,}" ]; then
|
||||||
ln -s "$TARGET_DIR/$app.sh" /usr/bin/"${app,,}"
|
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"
|
||||||
|
|
||||||
|
if [ -e /usr/bin/"${app,,}" ]; then
|
||||||
rm /usr/bin/"${app,,}"
|
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;
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
|
QDir dir(workPath);
|
||||||
|
|
||||||
|
while (toInitDirs.size()) {
|
||||||
|
QString dirName = toInitDirs.pop();
|
||||||
|
|
||||||
|
if (!dir.mkdir(dirName)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
addToDeployed(path);
|
|
||||||
|
if (!dir.cd(dirName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!addToDeployed(dir.absolutePath())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
@ -5,10 +5,12 @@ This is the first major update in 2021. CQtDeployer 1.5 contains many useful imp
|
|||||||
## 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
|
||||||
|
|
@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ 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
|
||||||
```
|
```
|
||||||
|
|
@ -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