mirror of
https://github.com/QuasarApp/CQtDeployer.git
synced 2025-05-16 19:39:36 +00:00
fix #396 "move system libs into lib/systemLibs folder"
This commit is contained in:
parent
40f0a9233b
commit
ff1fb00c6a
@ -708,6 +708,10 @@ bool DeployCore::checkSystemBakupSnapInterface() {
|
|||||||
return QDir(DeployCore::snapRootFS()).entryList(QDir::AllEntries | QDir::NoDotAndDotDot).size();
|
return QDir(DeployCore::snapRootFS()).entryList(QDir::AllEntries | QDir::NoDotAndDotDot).size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString DeployCore::systemLibsFolderName() {
|
||||||
|
return "systemLibs";
|
||||||
|
}
|
||||||
|
|
||||||
uint qHash(WinAPI i) {
|
uint qHash(WinAPI i) {
|
||||||
return static_cast<uint>(i);
|
return static_cast<uint>(i);
|
||||||
}
|
}
|
||||||
|
@ -251,6 +251,13 @@ public:
|
|||||||
static QString snapRootFS();
|
static QString snapRootFS();
|
||||||
static QString transportPathToSnapRoot(const QString &path);
|
static QString transportPathToSnapRoot(const QString &path);
|
||||||
static bool checkSystemBakupSnapInterface();
|
static bool checkSystemBakupSnapInterface();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief systemLibsFolderName This method return name of the systems librares.
|
||||||
|
* @return Name of folder with system libraryes.
|
||||||
|
* @note see https://github.com/QuasarApp/CQtDeployer/issues/396
|
||||||
|
*/
|
||||||
|
static QString systemLibsFolderName();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,13 +63,13 @@ bool Extra::contains(const QString &path) const {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto i: extraPathsMasks) {
|
for (const auto &i: extraPathsMasks) {
|
||||||
if (PathUtils::fixPath(info.absoluteFilePath()).contains(i)) {
|
if (PathUtils::fixPath(info.absoluteFilePath()).contains(i)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto i: extraNamesMasks) {
|
for (const auto &i: extraNamesMasks) {
|
||||||
if (PathUtils::fixPath(info.fileName()).contains(i)) {
|
if (PathUtils::fixPath(info.fileName()).contains(i)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,8 @@ void Extracter::extractExtraDataTargets() {
|
|||||||
for (auto i = cfg->packages().cbegin(); i != cfg->packages().cend(); ++i) {
|
for (auto i = cfg->packages().cbegin(); i != cfg->packages().cend(); ++i) {
|
||||||
auto &dep = _packageDependencyes[i.key()];
|
auto &dep = _packageDependencyes[i.key()];
|
||||||
|
|
||||||
for (const auto &target : i.value().extraData()) {
|
const auto extraDataList = i.value().extraData();
|
||||||
|
for (const auto &target : extraDataList) {
|
||||||
dep.addExtraData(target);
|
dep.addExtraData(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +138,8 @@ void Extracter::copyExtraPlugins(const QString& package) {
|
|||||||
auto targetPath = cnf->getTargetDir() + "/" + package;
|
auto targetPath = cnf->getTargetDir() + "/" + package;
|
||||||
auto distro = cnf->getDistroFromPackage(package);
|
auto distro = cnf->getDistroFromPackage(package);
|
||||||
|
|
||||||
for (auto extraPlugin : distro.extraPlugins()) {
|
auto extraPlugins = distro.extraPlugins();
|
||||||
|
for (const auto &extraPlugin : extraPlugins) {
|
||||||
|
|
||||||
info.setFile(extraPlugin);
|
info.setFile(extraPlugin);
|
||||||
|
|
||||||
@ -166,7 +168,7 @@ void Extracter::copyExtraPlugins(const QString& package) {
|
|||||||
QuasarAppUtils::Warning);
|
QuasarAppUtils::Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& plugin : plugins) {
|
for (const auto& plugin : qAsConst(plugins)) {
|
||||||
extractPluginLib(plugin, package);
|
extractPluginLib(plugin, package);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -190,7 +192,7 @@ void Extracter::extractPlugins() {
|
|||||||
_fileManager->copyFiles(plugins, targetPath + distro.getPluginsOutDir(), 1,
|
_fileManager->copyFiles(plugins, targetPath + distro.getPluginsOutDir(), 1,
|
||||||
DeployCore::debugExtensions(), &listItems);
|
DeployCore::debugExtensions(), &listItems);
|
||||||
|
|
||||||
for (const auto &item : listItems) {
|
for (const auto &item : qAsConst(listItems)) {
|
||||||
extractPluginLib(item, i.key());
|
extractPluginLib(item, i.key());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,13 +201,18 @@ void Extracter::extractPlugins() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Extracter::copyLibs(const QSet<QString> &files, const QString& package) {
|
void Extracter::copyLibs(const QSet<QString> &files, const QString& package, bool system) {
|
||||||
auto cnf = DeployCore::_config;
|
auto cnf = DeployCore::_config;
|
||||||
auto targetPath = cnf->getTargetDir() + "/" + package;
|
auto targetPath = cnf->getTargetDir() + "/" + package;
|
||||||
auto distro = cnf->getDistroFromPackage(package);
|
auto distro = cnf->getDistroFromPackage(package);
|
||||||
|
|
||||||
|
auto libOutpath = targetPath + distro.getLibOutDir();
|
||||||
|
if (system) {
|
||||||
|
libOutpath += "/" + DeployCore::systemLibsFolderName();
|
||||||
|
}
|
||||||
|
|
||||||
for (const auto &file : files) {
|
for (const auto &file : files) {
|
||||||
if (!_fileManager->smartCopyFile(file, targetPath + distro.getLibOutDir())) {
|
if (!_fileManager->smartCopyFile(file, libOutpath)) {
|
||||||
QuasarAppUtils::Params::log(file + " not copied");
|
QuasarAppUtils::Params::log(file + " not copied");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -229,10 +236,10 @@ void Extracter::copyFiles() {
|
|||||||
|
|
||||||
for (auto i = cnf->packages().cbegin(); i != cnf->packages().cend(); ++i) {
|
for (auto i = cnf->packages().cbegin(); i != cnf->packages().cend(); ++i) {
|
||||||
|
|
||||||
copyLibs(_packageDependencyes[i.key()].neadedLibs(), i.key());
|
copyLibs(_packageDependencyes[i.key()].neadedLibs(), i.key(), false);
|
||||||
|
|
||||||
if (QuasarAppUtils::Params::isEndable("deploySystem")) {
|
if (QuasarAppUtils::Params::isEndable("deploySystem")) {
|
||||||
copyLibs(_packageDependencyes[i.key()].systemLibs(), i.key());
|
copyLibs(_packageDependencyes[i.key()].systemLibs(), i.key(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -399,7 +406,9 @@ bool Extracter::extractQml() {
|
|||||||
QStringList plugins;
|
QStringList plugins;
|
||||||
QStringList listItems;
|
QStringList listItems;
|
||||||
|
|
||||||
for (const auto &qmlInput: distro.qmlInput()) {
|
const auto qmlImports = distro.qmlInput();
|
||||||
|
|
||||||
|
for (const auto &qmlInput: qmlImports) {
|
||||||
QFileInfo info(qmlInput);
|
QFileInfo info(qmlInput);
|
||||||
|
|
||||||
if (!info.isDir()) {
|
if (!info.isDir()) {
|
||||||
@ -431,7 +440,7 @@ bool Extracter::extractQml() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto &item : listItems) {
|
for (const auto &item : qAsConst(listItems)) {
|
||||||
extractPluginLib(item, i.key());
|
extractPluginLib(item, i.key());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,14 @@ private:
|
|||||||
|
|
||||||
void copyFiles();
|
void copyFiles();
|
||||||
void copyTr();
|
void copyTr();
|
||||||
void copyLibs(const QSet<QString> &files, const QString &package);
|
|
||||||
|
/**
|
||||||
|
* @brief copyLibs This method copy input libraryes into libOut dir.
|
||||||
|
* @param files This is set of input libs
|
||||||
|
* @param package This is package id of deployement pacakge.
|
||||||
|
* @param system This option set for systems libraryes. If This option will be set to true then libOut dir will be changed to libOut/systemLibs. see https://github.com/QuasarApp/CQtDeployer/issues/396.
|
||||||
|
*/
|
||||||
|
void copyLibs(const QSet<QString> &files, const QString &package, bool system);
|
||||||
void copyExtraData(const QSet<QString> &files, const QString &package);
|
void copyExtraData(const QSet<QString> &files, const QString &package);
|
||||||
|
|
||||||
bool isWebEngine(const QString& package) const;
|
bool isWebEngine(const QString& package) const;
|
||||||
|
@ -37,10 +37,12 @@ bool MetaFileManager::createRunScriptWindows(const QString &target) {
|
|||||||
script.close();
|
script.close();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
auto systemLibsDir = distro.getLibOutDir() + DeployCore::systemLibsFolderName();
|
||||||
|
|
||||||
content =
|
content =
|
||||||
"@echo off \n"
|
"@echo off \n"
|
||||||
"SET BASE_DIR=%~dp0\n"
|
"SET BASE_DIR=%~dp0\n"
|
||||||
"SET PATH=%BASE_DIR%" + distro.getLibOutDir() + ";%PATH%\n"
|
"SET PATH=%BASE_DIR%" + distro.getLibOutDir() + ";%PATH%;" + systemLibsDir + "\n"
|
||||||
"%2\n"
|
"%2\n"
|
||||||
"call \"%BASE_DIR%" + distro.getBinOutDir() + "%0\" %1 \n";
|
"call \"%BASE_DIR%" + distro.getBinOutDir() + "%0\" %1 \n";
|
||||||
|
|
||||||
@ -91,11 +93,14 @@ bool MetaFileManager::createRunScriptLinux(const QString &target) {
|
|||||||
script.close();
|
script.close();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
auto systemLibsDir = distro.getLibOutDir() + DeployCore::systemLibsFolderName();
|
||||||
|
|
||||||
content =
|
content =
|
||||||
"#!/bin/sh\n"
|
"#!/bin/sh\n"
|
||||||
"BASE_DIR=$(dirname \"$(readlink -f \"$0\")\")\n"
|
"BASE_DIR=$(dirname \"$(readlink -f \"$0\")\")\n"
|
||||||
"export "
|
"export "
|
||||||
"LD_LIBRARY_PATH=\"$BASE_DIR\"" + distro.getLibOutDir() + ":\"$BASE_DIR\":$LD_LIBRARY_PATH\n"
|
"LD_LIBRARY_PATH=\"$BASE_DIR\"" + distro.getLibOutDir() + ":\"$BASE_DIR\":$LD_LIBRARY_PATH:" + systemLibsDir + "\n"
|
||||||
"export QML_IMPORT_PATH=\"$BASE_DIR\"" + distro.getQmlOutDir() + ":$QML_IMPORT_PATH\n"
|
"export QML_IMPORT_PATH=\"$BASE_DIR\"" + distro.getQmlOutDir() + ":$QML_IMPORT_PATH\n"
|
||||||
"export QML2_IMPORT_PATH=\"$BASE_DIR\"" + distro.getQmlOutDir() + ":$QML2_IMPORT_PATH\n"
|
"export QML2_IMPORT_PATH=\"$BASE_DIR\"" + distro.getQmlOutDir() + ":$QML2_IMPORT_PATH\n"
|
||||||
"export QT_PLUGIN_PATH=\"$BASE_DIR\"" + distro.getPluginsOutDir() + ":$QT_PLUGIN_PATH\n"
|
"export QT_PLUGIN_PATH=\"$BASE_DIR\"" + distro.getPluginsOutDir() + ":$QT_PLUGIN_PATH\n"
|
||||||
|
@ -46,7 +46,7 @@ bool Packing::create() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto package : _pakages) {
|
for (auto package : qAsConst(_pakages)) {
|
||||||
|
|
||||||
if (!package)
|
if (!package)
|
||||||
return false;
|
return false;
|
||||||
@ -90,7 +90,6 @@ bool Packing::create() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto exit = QString("exit code = %0").arg(_proc->exitCode());
|
|
||||||
QString stdoutLog = _proc->readAllStandardOutput();
|
QString stdoutLog = _proc->readAllStandardOutput();
|
||||||
QString erroutLog = _proc->readAllStandardError();
|
QString erroutLog = _proc->readAllStandardError();
|
||||||
auto message = QString("message = %0").arg(stdoutLog + " " + erroutLog);
|
auto message = QString("message = %0").arg(stdoutLog + " " + erroutLog);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
BASE_DIR=$(dirname "$(readlink -f "$0")")
|
BASE_DIR=$(dirname "$(readlink -f "$0")")
|
||||||
export LD_LIBRARY_PATH="$BASE_DIR"/lib/:"$BASE_DIR":$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH="$BASE_DIR"/lib/:"$BASE_DIR":$LD_LIBRARY_PATH:/lib/systemLibs
|
||||||
export QML_IMPORT_PATH="$BASE_DIR"/q/and/q/:$QML_IMPORT_PATH
|
export QML_IMPORT_PATH="$BASE_DIR"/q/and/q/:$QML_IMPORT_PATH
|
||||||
export QML2_IMPORT_PATH="$BASE_DIR"/q/and/q/:$QML2_IMPORT_PATH
|
export QML2_IMPORT_PATH="$BASE_DIR"/q/and/q/:$QML2_IMPORT_PATH
|
||||||
export QT_PLUGIN_PATH="$BASE_DIR"/plugins/:$QT_PLUGIN_PATH
|
export QT_PLUGIN_PATH="$BASE_DIR"/plugins/:$QT_PLUGIN_PATH
|
||||||
|
@ -2387,8 +2387,8 @@ void deploytest::testSystemLib() {
|
|||||||
"./" + DISTRO_DIR + "/TestOnlyC.sh",
|
"./" + DISTRO_DIR + "/TestOnlyC.sh",
|
||||||
"./" + DISTRO_DIR + "/bin/qt.conf",
|
"./" + DISTRO_DIR + "/bin/qt.conf",
|
||||||
"./" + DISTRO_DIR + "/bin/TestOnlyC",
|
"./" + DISTRO_DIR + "/bin/TestOnlyC",
|
||||||
"./" + DISTRO_DIR + "/lib/libgcc_s.so",
|
"./" + DISTRO_DIR + "/lib/systemLibs/libgcc_s.so",
|
||||||
"./" + DISTRO_DIR + "/lib/libstdc++.so"
|
"./" + DISTRO_DIR + "/lib/systemLibs/libstdc++.so"
|
||||||
});
|
});
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -2397,10 +2397,10 @@ void deploytest::testSystemLib() {
|
|||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/TestOnlyC.exe",
|
"./" + DISTRO_DIR + "/TestOnlyC.exe",
|
||||||
"./" + DISTRO_DIR + "/TestOnlyC.bat",
|
"./" + DISTRO_DIR + "/TestOnlyC.bat",
|
||||||
"./" + DISTRO_DIR + "/libgcc_s_seh-1.dll",
|
"./" + DISTRO_DIR + "/systemLibs/libgcc_s_seh-1.dll",
|
||||||
"./" + DISTRO_DIR + "/libstdc++-6.dll",
|
"./" + DISTRO_DIR + "/systemLibs/libstdc++-6.dll",
|
||||||
"./" + DISTRO_DIR + "/libwinpthread-1.dll",
|
"./" + DISTRO_DIR + "/systemLibs/libwinpthread-1.dll",
|
||||||
"./" + DISTRO_DIR + "/msvcrt.dll",
|
"./" + DISTRO_DIR + "/systemLibs/msvcrt.dll",
|
||||||
"./" + DISTRO_DIR + "/qt.conf"
|
"./" + DISTRO_DIR + "/qt.conf"
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -2426,12 +2426,12 @@ void deploytest::testSystemLib() {
|
|||||||
"./" + DISTRO_DIR + "/TestOnlyC.sh",
|
"./" + DISTRO_DIR + "/TestOnlyC.sh",
|
||||||
"./" + DISTRO_DIR + "/bin/qt.conf",
|
"./" + DISTRO_DIR + "/bin/qt.conf",
|
||||||
"./" + DISTRO_DIR + "/bin/TestOnlyC",
|
"./" + DISTRO_DIR + "/bin/TestOnlyC",
|
||||||
"./" + DISTRO_DIR + "/lib/libgcc_s.so",
|
"./" + DISTRO_DIR + "/lib/systemLibs/libgcc_s.so",
|
||||||
"./" + DISTRO_DIR + "/lib/ld-linux-x86-64.so",
|
"./" + DISTRO_DIR + "/lib/systemLibs/ld-linux-x86-64.so",
|
||||||
"./" + DISTRO_DIR + "/lib/libc.so",
|
"./" + DISTRO_DIR + "/lib/systemLibs/libc.so",
|
||||||
"./" + DISTRO_DIR + "/lib/libm.so",
|
"./" + DISTRO_DIR + "/lib/systemLibs/libm.so",
|
||||||
|
|
||||||
"./" + DISTRO_DIR + "/lib/libstdc++.so"
|
"./" + DISTRO_DIR + "/lib/systemLibs/libstdc++.so"
|
||||||
});
|
});
|
||||||
|
|
||||||
runTestParams({"-bin", bin, "clear" ,
|
runTestParams({"-bin", bin, "clear" ,
|
||||||
@ -2462,24 +2462,24 @@ void deploytest::testSystemLib() {
|
|||||||
|
|
||||||
comapareTree += utils.createTree(
|
comapareTree += utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/libgcc_s_seh-1.dll",
|
"./" + DISTRO_DIR + "/systemLibs/libgcc_s_seh-1.dll",
|
||||||
"./" + DISTRO_DIR + "/libstdc++-6.dll",
|
"./" + DISTRO_DIR + "/systemLibs/libstdc++-6.dll",
|
||||||
"./" + DISTRO_DIR + "/libwinpthread-1.dll",
|
"./" + DISTRO_DIR + "/systemLibs/libwinpthread-1.dll",
|
||||||
"./" + DISTRO_DIR + "/msvcrt.dll",
|
"./" + DISTRO_DIR + "/systemLibs/msvcrt.dll",
|
||||||
"./" + DISTRO_DIR + "/qt.conf",
|
"./" + DISTRO_DIR + "/qt.conf",
|
||||||
"./" + DISTRO_DIR + "/mpr.dll",
|
"./" + DISTRO_DIR + "/systemLibs/mpr.dll",
|
||||||
"./" + DISTRO_DIR + "/profapi.dll",
|
"./" + DISTRO_DIR + "/systemLibs/profapi.dll",
|
||||||
"./" + DISTRO_DIR + "/rpcrt4.dll",
|
"./" + DISTRO_DIR + "/systemLibs/rpcrt4.dll",
|
||||||
"./" + DISTRO_DIR + "/shell32.dll",
|
"./" + DISTRO_DIR + "/systemLibs/shell32.dll",
|
||||||
"./" + DISTRO_DIR + "/userenv.dll",
|
"./" + DISTRO_DIR + "/systemLibs/userenv.dll",
|
||||||
"./" + DISTRO_DIR + "/uxtheme.dll",
|
"./" + DISTRO_DIR + "/systemLibs/uxtheme.dll",
|
||||||
"./" + DISTRO_DIR + "/version.dll",
|
"./" + DISTRO_DIR + "/systemLibs/version.dll",
|
||||||
"./" + DISTRO_DIR + "/ucrtbase.dll",
|
"./" + DISTRO_DIR + "/systemLibs/ucrtbase.dll",
|
||||||
"./" + DISTRO_DIR + "/oleaut32.dll",
|
"./" + DISTRO_DIR + "/systemLibs/oleaut32.dll",
|
||||||
"./" + DISTRO_DIR + "/bcryptprimitives.dll",
|
"./" + DISTRO_DIR + "/systemLibs/bcryptprimitives.dll",
|
||||||
"./" + DISTRO_DIR + "/msvcp_win.dll",
|
"./" + DISTRO_DIR + "/systemLibs/msvcp_win.dll",
|
||||||
"./" + DISTRO_DIR + "/wtsapi32.dll",
|
"./" + DISTRO_DIR + "/systemLibs/wtsapi32.dll",
|
||||||
"./" + DISTRO_DIR + "/combase.dll",
|
"./" + DISTRO_DIR + "/systemLibs/combase.dll",
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -2487,9 +2487,9 @@ void deploytest::testSystemLib() {
|
|||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
|
||||||
comapareTree += utils.createTree(
|
comapareTree += utils.createTree(
|
||||||
{
|
{
|
||||||
"./" + DISTRO_DIR + "/d3d11.dll",
|
"./" + DISTRO_DIR + "/systemLibs/d3d11.dll",
|
||||||
"./" + DISTRO_DIR + "/dxgi.dll",
|
"./" + DISTRO_DIR + "/systemLibs/dxgi.dll",
|
||||||
"./" + DISTRO_DIR + "/win32u.dll",
|
"./" + DISTRO_DIR + "/systemLibs/win32u.dll",
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user