fix windows build

This commit is contained in:
Andrei Yankovich 2019-09-14 13:59:11 +03:00
parent d617080ccf
commit dd72918d40
13 changed files with 80 additions and 72 deletions

View File

@ -45,7 +45,7 @@ include('$$PWD/../pe/pe-parser-library/pe-parser-library.pri')
SOURCES += \
cqt.cpp \
configparser.cpp \
deploy.cpp \
deploycore.cpp \
envirement.cpp \
@ -61,7 +61,7 @@ SOURCES += \
libinfo.cpp
HEADERS += \
cqt.h \
configparser.h \
deploy.h \
deploy_global.h \
deploycore.h \

View File

@ -1,4 +1,4 @@
#include "cqt.h"
#include "configparser.h"
#include <QDebug>
#include <QDir>
#include <QFileInfo>
@ -7,7 +7,7 @@
#include "filemanager.h"
#include "quasarapp.h"
bool CQT::parseParams() {
bool ConfigParser::parseParams() {
auto path = QuasarAppUtils::Params::getStrArg("confFile");
bool createFile = !path.isEmpty();
@ -64,11 +64,11 @@ bool CQT::parseParams() {
return true;
}
const DeployConfig *CQT::config() const {
const DeployConfig *ConfigParser::config() const {
return &_config;
}
void CQT::writeKey(const QString& key, QJsonObject& obj) const {
void ConfigParser::writeKey(const QString& key, QJsonObject& obj) const {
if (QuasarAppUtils::Params::isEndable(key)) {
auto list = QuasarAppUtils::Params::getStrArg(key).split(',');
@ -92,7 +92,7 @@ void CQT::writeKey(const QString& key, QJsonObject& obj) const {
}
}
void CQT::readKey(const QString& key, const QJsonObject& obj) const {
void ConfigParser::readKey(const QString& key, const QJsonObject& obj) const {
if (!QuasarAppUtils::Params::isEndable(key)) {
if (obj[key].isArray()) {
@ -120,7 +120,7 @@ void CQT::readKey(const QString& key, const QJsonObject& obj) const {
}
}
bool CQT::createFromDeploy(const QString& confFile) const {
bool ConfigParser::createFromDeploy(const QString& confFile) const {
QJsonObject obj;
for (auto &key :DeployCore::helpKeys()) {
@ -142,7 +142,7 @@ bool CQT::createFromDeploy(const QString& confFile) const {
}
bool CQT::loadFromFile(const QString& confFile) {
bool ConfigParser::loadFromFile(const QString& confFile) {
QFile file(confFile);
if (file.open(QIODevice::ReadOnly)) {
@ -166,7 +166,7 @@ bool CQT::loadFromFile(const QString& confFile) {
return false;
}
bool CQT::parseQtDeployMode() {
bool ConfigParser::parseQtDeployMode() {
auto bin = QuasarAppUtils::Params::getStrArg("bin").split(',');
@ -234,7 +234,7 @@ bool CQT::parseQtDeployMode() {
return true;
}
bool CQT::parseQtInfoMode() {
bool ConfigParser::parseQtInfoMode() {
if ((QuasarAppUtils::Params::isEndable("v") ||
QuasarAppUtils::Params::isEndable("version"))) {
DeployCore::printVersion();
@ -246,13 +246,13 @@ bool CQT::parseQtInfoMode() {
return true;
}
bool CQT::parseQtClearMode() {
bool ConfigParser::parseQtClearMode() {
setTargetDir("./");
return true;
}
void CQT::setTargetDir(const QString &target) {
void ConfigParser::setTargetDir(const QString &target) {
if (QuasarAppUtils::Params::isEndable("targetDir")) {
_config.targetDir = QFileInfo(QuasarAppUtils::Params::getStrArg("targetDir")).absoluteFilePath();
@ -268,7 +268,7 @@ void CQT::setTargetDir(const QString &target) {
}
}
bool CQT::setTargets(const QStringList &value) {
bool ConfigParser::setTargets(const QStringList &value) {
bool isfillList = false;
@ -305,7 +305,7 @@ bool CQT::setTargets(const QStringList &value) {
return true;
}
bool CQT::setTargetsRecursive(const QString &dir) {
bool ConfigParser::setTargetsRecursive(const QString &dir) {
if (!setBinDir(dir, true)) {
qWarning() << "setBinDir failed!";
return false;
@ -316,7 +316,7 @@ bool CQT::setTargetsRecursive(const QString &dir) {
return true;
}
bool CQT::setBinDir(const QString &dir, bool recursive) {
bool ConfigParser::setBinDir(const QString &dir, bool recursive) {
QDir d(dir);
if (dir.isEmpty() || !d.exists()) {
DeployCore::verboseLog(dir + " dir not exits!");
@ -355,7 +355,7 @@ bool CQT::setBinDir(const QString &dir, bool recursive) {
return result;
}
void CQT::initIgnoreList()
void ConfigParser::initIgnoreList()
{
if (QuasarAppUtils::Params::isEndable("ignore")) {
auto list = QuasarAppUtils::Params::getStrArg("ignore").split(',');
@ -368,7 +368,7 @@ void CQT::initIgnoreList()
}
}
void CQT::initIgnoreEnvList() {
void ConfigParser::initIgnoreEnvList() {
if (QuasarAppUtils::Params::isEndable("ignoreEnv")) {
auto ignoreList = QuasarAppUtils::Params::getStrArg("ignoreEnv").split(',');
@ -388,14 +388,14 @@ void CQT::initIgnoreEnvList() {
}
}
void CQT::setQmlScaner(const QString &value) {
void ConfigParser::setQmlScaner(const QString &value) {
_config.externQmlScaner = QDir::fromNativeSeparators(value);
QuasarAppUtils::Params::verboseLog("qmlScaner = " + _config.externQmlScaner,
QuasarAppUtils::VerboseLvl::Info);
_config.deployQml = QFileInfo(_config.externQmlScaner).isFile();
}
void CQT::setQmake(const QString &value) {
void ConfigParser::setQmake(const QString &value) {
_config.qmake = QDir::fromNativeSeparators(value);
QFileInfo info(_config.qmake);
@ -419,7 +419,7 @@ void CQT::setQmake(const QString &value) {
QuasarAppUtils::Params::verboseLog("translations = " + _config.translationDir);
}
void CQT::setQtDir(const QString &value) {
void ConfigParser::setQtDir(const QString &value) {
_config.qtDir = QDir::fromNativeSeparators(value);
_config.envirement.addEnv(_config.qtDir, _config.appDir, _config.targetDir);
_config.envirement.addEnv(_config.qtDir + "/lib", _config.appDir, _config.targetDir);
@ -427,7 +427,7 @@ void CQT::setQtDir(const QString &value) {
}
void CQT::setExtraPath(const QStringList &value) {
void ConfigParser::setExtraPath(const QStringList &value) {
QDir dir;
for (auto i : value) {
@ -448,14 +448,14 @@ void CQT::setExtraPath(const QStringList &value) {
}
}
void CQT::setExtraPlugins(const QStringList &value) {
void ConfigParser::setExtraPlugins(const QStringList &value) {
for (auto i : value) {
if (!i.isEmpty())
_config.extraPlugins.append(i);
}
}
QString CQT::recursiveInvairement(int depch, QDir &dir) {
QString ConfigParser::recursiveInvairement(int depch, QDir &dir) {
char separator = ':';
@ -483,7 +483,7 @@ QString CQT::recursiveInvairement(int depch, QDir &dir) {
return res;
}
void CQT::initEnvirement() {
void ConfigParser::initEnvirement() {
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
_config.envirement.addEnv(env.value("LD_LIBRARY_PATH"), _config.appDir, _config.targetDir);
_config.envirement.addEnv(env.value("PATH"), _config.appDir, _config.targetDir);
@ -505,7 +505,7 @@ void CQT::initEnvirement() {
}
}
QStringList CQT::getDirsRecursive(const QString &path, int maxDepch, int depch) {
QStringList ConfigParser::getDirsRecursive(const QString &path, int maxDepch, int depch) {
QDir dir(path);
QStringList res;
@ -524,7 +524,7 @@ QStringList CQT::getDirsRecursive(const QString &path, int maxDepch, int depch)
return res;
}
bool CQT::smartMoveTargets() {
bool ConfigParser::smartMoveTargets() {
QMap<QString, bool> temp;
bool result = true;
@ -533,8 +533,8 @@ bool CQT::smartMoveTargets() {
QFileInfo target(i.key());
auto targetPath = _config.targetDir + (DeployCore::isLib(target) ? "/lib" : "/bin");
if (target.completeSuffix().contains("dll", Qt::CaseInsensitive) ||
target.completeSuffix().contains("exe", Qt::CaseInsensitive)) {
if (target.completeSuffix().compare("dll", Qt::CaseInsensitive) == 0 ||
target.completeSuffix().compare("exe", Qt::CaseInsensitive) == 0) {
targetPath = _config.targetDir;
@ -554,7 +554,7 @@ bool CQT::smartMoveTargets() {
return result;
}
CQT::CQT(FileManager *filemanager):
ConfigParser::ConfigParser(FileManager *filemanager):
_fileManager(filemanager) {
assert(_fileManager);

View File

@ -35,10 +35,7 @@ struct DEPLOYSHARED_EXPORT DeployConfig {
};
/**
* @brief The CQT class - it is wrapper for cqt file. qcn it is configuration file of deploying project.
*/
class DEPLOYSHARED_EXPORT CQT
class DEPLOYSHARED_EXPORT ConfigParser
{
private:
@ -76,7 +73,7 @@ private:
void writeKey(const QString &key, QJsonObject &) const;
void readKey(const QString &key, const QJsonObject &obj) const;
public:
CQT(FileManager *filemanager);
ConfigParser(FileManager *filemanager);
bool parseParams();
bool smartMoveTargets();

View File

@ -24,8 +24,8 @@ PrivateScaner DependenciesScanner::getScaner(const QString &lib) const {
auto sufix = info.completeSuffix();
if (sufix.contains("dll", Qt::CaseSensitive) ||
sufix.contains("exe", Qt::CaseSensitive)) {
if (sufix.compare("dll", Qt::CaseSensitive) == 0 ||
sufix.compare("exe", Qt::CaseSensitive) == 0) {
return PrivateScaner::PE;
} else if (sufix.isEmpty() || sufix.contains("so", Qt::CaseSensitive)) {
return PrivateScaner::ELF;

View File

@ -5,7 +5,7 @@
* of this license document, but changing it is not allowed.
*/
#include "cqt.h"
#include "configparser.h"
#include "deploy.h"
#include "extracter.h"
#include "filemanager.h"
@ -13,7 +13,7 @@
Deploy::Deploy() {
_fileManager = new FileManager();
_paramsParser = new CQT(_fileManager);
_paramsParser = new ConfigParser(_fileManager);
}
int Deploy::run() {

View File

@ -10,7 +10,7 @@
#include "deploy_global.h"
class CQT;
class ConfigParser;
class Extracter;
class FileManager;
@ -18,7 +18,7 @@ class DEPLOYSHARED_EXPORT Deploy
{
private:
CQT * _paramsParser = nullptr;
ConfigParser * _paramsParser = nullptr;
Extracter *_extracter = nullptr;
FileManager *_fileManager = nullptr;

View File

@ -13,7 +13,7 @@
#include <QDir>
#include <QFileInfo>
#include <QLibraryInfo>
#include <cqt.h>
#include <configparser.h>
//QString DeployCore::qtDir = "";
//QStringList DeployCore::extraPaths = QStringList();

View File

@ -8,7 +8,7 @@
#include "extracter.h"
#include "deploycore.h"
#include "pluginsparser.h"
#include "cqt.h"
#include "configparser.h"
#include <QCoreApplication>
#include <QDebug>
#include <QDir>
@ -224,7 +224,7 @@ void Extracter::createRunMetaFiles()
for (auto i = DeployCore::_config->targets.cbegin(); i != DeployCore::_config->targets.cend(); ++i) {
if (QFileInfo(i.key()).completeSuffix() == "exe") {
if (QFileInfo(i.key()).completeSuffix().compare("exe", Qt::CaseInsensitive) == 0) {
targetWindows = true;
}
@ -435,8 +435,8 @@ void Extracter::extract(const QString &file) {
auto sufix = info.completeSuffix();
if (sufix.contains("dll", Qt::CaseSensitive) ||
sufix.contains("exe", Qt::CaseSensitive) ||
if (sufix.compare("dll", Qt::CaseSensitive) == 0 ||
sufix.compare("exe", Qt::CaseSensitive) == 0 ||
sufix.isEmpty() || sufix.contains("so", Qt::CaseSensitive)) {
extractLib(file);
@ -446,7 +446,7 @@ void Extracter::extract(const QString &file) {
}
Extracter::Extracter(FileManager *fileManager, CQT *cqt):
Extracter::Extracter(FileManager *fileManager, ConfigParser *cqt):
_fileManager(fileManager),
_cqt(cqt) {

View File

@ -15,7 +15,7 @@
#include "filemanager.h"
#include "qml.h"
class CQT;
class ConfigParser;
class DEPLOYSHARED_EXPORT Extracter {
private:
@ -26,7 +26,7 @@ class DEPLOYSHARED_EXPORT Extracter {
DependenciesScanner scaner;
FileManager *_fileManager;
CQT *_cqt;
ConfigParser *_cqt;
void extract(const QString &file);
bool copyTranslations(QStringList list);
@ -63,7 +63,7 @@ class DEPLOYSHARED_EXPORT Extracter {
void copyExtraPlugins();
public:
explicit Extracter(FileManager *fileManager, CQT * cqt);
explicit Extracter(FileManager *fileManager, ConfigParser * cqt);
bool createRunScript(const QString &target);
void deploy();

View File

@ -310,8 +310,8 @@ void FileManager::copyFiles(const QStringList &files, const QString& targetDir)
for (auto file : files) {
QFileInfo target(file);
auto targetPath = targetDir + QDir::separator() + "lib";
if (target.completeSuffix().contains("dll", Qt::CaseInsensitive) ||
target.completeSuffix().contains("exe", Qt::CaseInsensitive)) {
if (target.completeSuffix().compare("dll", Qt::CaseInsensitive) == 0 ||
target.completeSuffix().compare("exe", Qt::CaseInsensitive) == 0) {
targetPath = targetDir;
}

View File

@ -55,6 +55,9 @@ PE::PE(): IGetLibInfo () {
bool PE::getLibInfo(const QString &lib, LibInfo &info) const {
auto parsedPeLib = peparse::ParsePEFromFile(lib.toLatin1());
if (!parsedPeLib)
return false;
if (static_cast<RunType>(parsedPeLib->peHeader.nt.OptionalMagic) == RunType::_32bit) {
info.setPlatform(Platform::Win32);
} else if (static_cast<RunType>(parsedPeLib->peHeader.nt.OptionalMagic) == RunType::_64bit) {

View File

@ -128,6 +128,13 @@ QSet<QString> Modules::qtLibs() {
QSet<QString> Modules::qmlLibs() {
TestUtils utils;
#ifdef Q_OS_WIN
auto tree = utils.createTree(
{
});
#else
auto tree = utils.createTree(
{
"./Distro/TestQMLWidgets.sh",
@ -709,6 +716,7 @@ QSet<QString> Modules::qmlLibs() {
"./Distro/translations/qtdeclarative_sk.qm",
"./Distro/translations/qtdeclarative_uk.qm"
});
#endif
return tree;
}

View File

@ -12,7 +12,7 @@
#include <dependenciesscanner.h>
#include <qml.h>
#include <deploy.h>
#include <cqt.h>
#include <configparser.h>
#include <QCryptographicHash>
#include <QMap>
@ -278,7 +278,7 @@ void deploytest::cleanupTestCase() {
void deploytest::testDeployTarget() {
FileManager file;
CQT *deploy = new CQT(&file);
ConfigParser *deploy = new ConfigParser(&file);
QStringList targets;
targets << "./test/bins/execTarget.exe";
@ -286,31 +286,31 @@ void deploytest::testDeployTarget() {
delete deploy;
targets.clear();
deploy = new CQT(&file);
deploy = new ConfigParser(&file);
targets << "./test/bins/execTarget";
QVERIFY(deploy->setTargets(targets));
delete deploy;
targets.clear();
deploy = new CQT(&file);
deploy = new ConfigParser(&file);
targets << "./test/bins/execTarget.exe" << "./test/bins/execTarget";
QVERIFY(deploy->setTargets(targets));
delete deploy;
targets.clear();
deploy = new CQT(&file);
deploy = new ConfigParser(&file);
targets << "./test/bns/execTarget.exe";
QVERIFY(!deploy->setTargets(targets));
delete deploy;
targets.clear();
deploy = new CQT(&file);
deploy = new ConfigParser(&file);
targets << "./test/bins/";
QVERIFY(deploy->setTargets(targets));
delete deploy;
targets.clear();
deploy = new CQT(&file);
deploy = new ConfigParser(&file);
targets << "./test/bins/" << "./test/warning/";
QVERIFY(deploy->setTargets(targets));
@ -463,7 +463,7 @@ void deploytest::testQmlExtrct() {
void deploytest::testSetTargetDir() {
FileManager file;
CQT dep(&file);
ConfigParser dep(&file);
dep.setTargetDir();
@ -561,19 +561,22 @@ void deploytest::testOverwrite() {
TestUtils utils;
#ifdef Q_OS_UNIX
QFile f("./Distro/bin/TestOnlyC");
auto comapareTree = utils.createTree(
{"./Distro/bin/TestOnlyC",
"./Distro/TestOnlyC.sh"});
QString bin = TestBinDir + "TestOnlyC";
#else
QFile f("./Distro/TestOnlyC.exe");
auto comapareTree = utils.createTree(
{"./Distro/TestOnlyC.exe",
"./Distro/qt.conf"});
QString bin = TestBinDir + "TestOnlyC.exe";
#endif
runTestParams({"-bin", TestBinDir + "TestOnlyC", "force-clear", "noOverwrite"}, &comapareTree);
QFile f("./Distro/bin/TestOnlyC");
runTestParams({"-bin", bin, "force-clear", "noOverwrite"}, &comapareTree);
QVERIFY(f.open(QIODevice::ReadOnly));
auto hashBefor = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
@ -589,7 +592,7 @@ void deploytest::testOverwrite() {
QVERIFY(hashAfter != hashBefor);
runTestParams({"-bin", TestBinDir + "TestOnlyC", "noOverwrite"}, &comapareTree);
runTestParams({"-bin", bin, "noOverwrite"}, &comapareTree);
QVERIFY(f.open(QIODevice::ReadOnly));
hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
@ -598,7 +601,7 @@ void deploytest::testOverwrite() {
QVERIFY(hashAfter != hashBefor);
runTestParams({"-bin", TestBinDir + "TestOnlyC"}, &comapareTree);
runTestParams({"-bin", bin}, &comapareTree);
QVERIFY(f.open(QIODevice::ReadOnly));
hashAfter = QCryptographicHash::hash(f.readAll(), QCryptographicHash::Md5);
@ -727,10 +730,7 @@ void deploytest::testQt() {
bin = TestBinDir + "QtWidgetsProject";
#else
auto comapareTree = utils.createTree(
{"./Distro/TestQMLWidgets.exe",
"./Distro/qt.conf"});
QString bin = TestBinDir + "QtWidgetsProject.exe";
bin = TestBinDir + "QtWidgetsProject.exe";
#endif
comapareTree = Modules::qtLibs();
@ -744,10 +744,10 @@ void deploytest::testQt() {
bin = TestBinDir + "QtWidgetsProject";
#else
auto comapareTree = utils.createTree(
comapareTree = utils.createTree(
{"./Distro/TestQMLWidgets.exe",
"./Distro/qt.conf"});
QString bin = TestBinDir + "QtWidgetsProject.exe";
bin = TestBinDir + "QtWidgetsProject.exe";
#endif