From 673cf40d2442d5a6ddf154d9e8663334995a824d Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Wed, 28 Oct 2020 14:16:20 +0300 Subject: [PATCH 1/3] deploy_tool Qt additional modules start --- utils/deploy_tool/main.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utils/deploy_tool/main.cpp b/utils/deploy_tool/main.cpp index dbee6b7d..f196b358 100644 --- a/utils/deploy_tool/main.cpp +++ b/utils/deploy_tool/main.cpp @@ -67,7 +67,7 @@ void usage() { "[-p ] [-s ] [--ignore ] [-S ] " "[-l ] [-D ] [--dpkg-workdir ] [-L | -W | -M ] " "[--name-tool ] [-d ] [-q ] [-a ] [-S ] " - "[-P ] [--qt-plugins ] -o [ ...]\"" << NewLine; + "[-P ] [--qt-plugins ] [--qt-modules ] -o [ ...]\"" << NewLine; piCout << Green << Bold << "Details:"; piCout << Bold << "Debug control"; piCout << "-h, --help " << Green << "- display this message and exit"; @@ -92,10 +92,11 @@ void usage() { piCout << "-S " << Green << "- set Qt styles (e.g. \"oxygen,breeze\"), default \"*\""; piCout << "-P " << Green << "- set Qt platforms (e.g. \"win,mini\"), default by host system"; piCout << "--qt-plugins " << Green << "- set Qt plugins description"; + piCout << "--qt-modules " << Green << "- additional Qt modules, may be separated by \"" DELIM "\" (e.g. \"Sql" DELIM "Xml\")"; piCout << ""; piCout << Bold << "Output control"; piCout << "-o " << Green << "- path for libraries copy to"; - piCout << "-p " << Green << "- path for Qt plugins, default \"/plugins\""; + piCout << "-p " << Green << "- path for Qt plugins, default \"\""; piCout << "--dependencies " << Green << "- search dependencies by , print them and copy missing libraries"; piCout << "--prefix " << Green << "- print before dependencies"; piCout << ""; @@ -129,7 +130,7 @@ QtDep qt_deps[] = { int depth = 8; bool fake = false, is_ldd = true, is_deps = false, need_qt = false; PIString ldd, readelf, objdump, otool, dpkg, nametool, strip, out_dir, qt_dir, out_plugins_dir, dpkg_workdir; -PIStringList styles, lib_dirs, add_libs, platforms, sqldrivers, input_files, plugin_libs; +PIStringList styles, lib_dirs, add_libs, platforms, sqldrivers, input_files, plugin_libs, qt_add_libs; PISet all_libs, miss_libs, all_deps, frameworks, framework_libs, miss_frameworks, qt_plugins, ignore_libs; PIMap qt_filters; @@ -590,6 +591,9 @@ int main(int argc, char * argv[]) { qt_filters["platforms"] = platforms; qt_filters["styles" ] = styles ; + qt_add_libs = cli.argumentValue("qt-modules").split(DELIM); + need_qt = !qt_add_libs.isEmpty(); + auto it = qt_filters.makeIterator(); while (it.next()) it.valueRef().forEachInplace([](PIString i)->PIString{ From 3e7344c95fb5788495ec92f6fd9d458c71292e28 Mon Sep 17 00:00:00 2001 From: peri4 Date: Wed, 28 Oct 2020 18:07:53 +0300 Subject: [PATCH 2/3] deploy_tool "qt-modules" feature works on Windows (maybe on *nix). On MacOS - no(( --- utils/deploy_tool/main.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/utils/deploy_tool/main.cpp b/utils/deploy_tool/main.cpp index f196b358..98dccabb 100644 --- a/utils/deploy_tool/main.cpp +++ b/utils/deploy_tool/main.cpp @@ -128,8 +128,9 @@ QtDep qt_deps[] = { int depth = 8; -bool fake = false, is_ldd = true, is_deps = false, need_qt = false; +bool fake = false, is_ldd = true, is_deps = false, need_qt = false, make_qt_format = true; PIString ldd, readelf, objdump, otool, dpkg, nametool, strip, out_dir, qt_dir, out_plugins_dir, dpkg_workdir; +PIString qt_pref, qt_suff; PIStringList styles, lib_dirs, add_libs, platforms, sqldrivers, input_files, plugin_libs, qt_add_libs; PISet all_libs, miss_libs, all_deps, frameworks, framework_libs, miss_frameworks, qt_plugins, ignore_libs; PIMap qt_filters; @@ -182,17 +183,22 @@ PIString execute(const PIString & cmd) { void checkQtLib(PIString lib) { - if (lib.startsWith("lib")) lib.cutLeft(3); - if (lib.startsWith("qt5")) lib.cutLeft(3); - if (lib.startsWith("qt")) lib.cutLeft(2); - if (lib.find(".")) lib = lib.left(lib.find(".")); - //piCout << "checkQt" << lib; + PIString pref, suff; + if (lib.startsWith("lib")) {pref += "lib"; lib.cutLeft(3);} + if (lib.startsWith("qt5")) {pref += "Qt5"; lib.cutLeft(3);} + if (lib.startsWith("qt" )) {pref += "Qt" ; lib.cutLeft(2);} + if (lib.find('.') >= 0) {suff = lib.right(lib.size_s() - lib.find('.')); lib = lib.left(lib.find('.'));} for (int i = 0; ; ++i) { if (qt_deps[i].lib.isEmpty()) break; if (qt_deps[i].lib == lib) { qt_plugins << qt_deps[i].plugins; //piCout << "add qt plugins" << qt_deps[i].plugins << "now" << qt_plugins; need_qt = true; + if (make_qt_format) { + make_qt_format = false; + qt_pref = pref; + qt_suff = suff; + } break; } } @@ -485,6 +491,7 @@ int main(int argc, char * argv[]) { cli.addArgument("Styles", true); cli.addArgument("Platforms", true); cli.addArgument("qt-plugins", PIChar('\0'), true); + cli.addArgument("qt-modules", PIChar('\0'), true); cli.addArgument("ldd", true); cli.addArgument("Lreadelf", true); cli.addArgument("Wobjdump", true); @@ -620,8 +627,15 @@ int main(int argc, char * argv[]) { } }); //piCout << files; - if (depth > 0) + if (depth > 0) { input_files.forEach([&](const PIString & f){procLdd(f);}); + qt_add_libs.forEach([&](const PIString & f){ + PIString l = findLib(qt_pref + f + qt_suff); + if (l.isEmpty()) return; + procLdd(l, true); + checkQtLib(f.toLowerCase()); + }); + } piForeach (PIString & s, add_libs) { if (s.isEmpty()) continue; PIString alib = findLib(s); From 24d9d66c24d0f3276f207d094d0b7241a37472b1 Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Tue, 3 Nov 2020 12:00:27 +0300 Subject: [PATCH 3/3] version 2.14.1 --- CMakeLists.txt | 4 ++-- libs/main/math/pievaluator.cpp | 8 ++++++-- libs/main/math/pievaluator.h | 5 ++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 95c9f964..c7bcfe58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake project(pip) set(pip_MAJOR 2) set(pip_MINOR 14) -set(pip_REVISION 0) -set(pip_SUFFIX beta) +set(pip_REVISION 1) +set(pip_SUFFIX ) set(pip_COMPANY SHS) set(pip_DOMAIN org.SHS) diff --git a/libs/main/math/pievaluator.cpp b/libs/main/math/pievaluator.cpp index 06e3fbf2..87414136 100644 --- a/libs/main/math/pievaluator.cpp +++ b/libs/main/math/pievaluator.cpp @@ -330,8 +330,10 @@ void PIEvaluator::makeOutput(PIString & string) { void PIEvaluator::findUnknownVariables() { PIString cvar; unknownVars.clear(); + usedVars.clear(); for (int i = 0; i < currentString.length(); i++) { - if (elements[i].var_num == -666) cvar += currentString[i]; + if (elements[i].var_num >= 0) usedVars << content.variable(elements[i].var_num).name; + else if (elements[i].var_num == -666) cvar += currentString[i]; else { if (cvar.length() == 0) continue; unknownVars << cvar; @@ -340,6 +342,7 @@ void PIEvaluator::findUnknownVariables() { } if (cvar.length() > 0) unknownVars << cvar; unknownVars.removeDuplicates(); + usedVars.removeDuplicates(); } @@ -1196,7 +1199,7 @@ complexd PIEvaluator::evaluate() { PIByteArray PIEvaluator::save() const { PIByteArray ret; - ret << content << currentVariables << unknownVars << instructions << currentString << lastError << out << correct; + ret << content << currentVariables << unknownVars << instructions << currentString << lastError << out << correct << usedVars; return ret; } @@ -1204,5 +1207,6 @@ PIByteArray PIEvaluator::save() const { void PIEvaluator::load(PIByteArray ba) { if (ba.size() <= 4) return; ba >> content >> currentVariables >> unknownVars >> instructions >> currentString >> lastError >> out >> correct; + if (ba.size() >= 4) ba >> usedVars; variables = currentVariables; } diff --git a/libs/main/math/pievaluator.h b/libs/main/math/pievaluator.h index 94ff6250..5433fb57 100644 --- a/libs/main/math/pievaluator.h +++ b/libs/main/math/pievaluator.h @@ -176,6 +176,9 @@ public: //! Returns all unknown variables founded in last expression passed to \a check() function const PIStringList & unknownVariables() const {return unknownVars;} + //! Returns all used variables founded in last expression passed to \a check() function + const PIStringList & usedVariables() const {return usedVars;} + //! Returns processed last expression passed to \a check() function const PIString & expression() const {return currentString;} @@ -220,7 +223,7 @@ private: PIDeque elements; PIVector currentVariables, variables, tmpvars, * kvars; PIVector instructions; - PIStringList unknownVars; + PIStringList unknownVars, usedVars; PIString currentString, lastError; complexd out; bool correct;