Compare commits
20 Commits
4e7ce2cd70
...
v1.3.12
Author | SHA1 | Date | |
---|---|---|---|
9b175d7789 | |||
2d7f145a25 | |||
4589c4ca76 | |||
a32258a59e | |||
22f25e5251 | |||
258d883a51 | |||
504e242d42 | |||
731cdcbe09 | |||
b4e2d4c54a | |||
42961dea40 | |||
fd2f601f67 | |||
b45af505cd | |||
2dfe80b654 | |||
4b9dcc5e99 | |||
53639b55c9 | |||
3a83efbd3f | |||
c9d6a8d245 | |||
91db59b9f3 | |||
1d81e6b650 | |||
6d57b45d1a |
@@ -34,6 +34,11 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||||||
# too small when updating apism.
|
# too small when updating apism.
|
||||||
# Fix display of UPDATE_SUCCESS when opkg_command fails. Detected when
|
# Fix display of UPDATE_SUCCESS when opkg_command fails. Detected when
|
||||||
# updating apsim failed.
|
# updating apsim failed.
|
||||||
|
# 1.3.11: Integrate version of ATBUpdateTool in SendLastVersion-ISMAS-message.
|
||||||
|
# 1.3.12: Add command parameters for output of yocto-infos about ATBUpdateTool.
|
||||||
|
# Use 'git pull' instead of 'git fetch'.
|
||||||
|
# Use 'git clone --filter=blob:none' instead of 'git clone' to speed
|
||||||
|
# up cloning of customer repository.
|
||||||
|
|
||||||
win32 {
|
win32 {
|
||||||
BUILD_DATE=$$system("date /t")
|
BUILD_DATE=$$system("date /t")
|
||||||
@@ -43,7 +48,10 @@ win32 {
|
|||||||
BUILD_TIME=$$system("date +%H:%M:%S")
|
BUILD_TIME=$$system("date +%H:%M:%S")
|
||||||
}
|
}
|
||||||
|
|
||||||
VERSION="1.3.10"
|
GIT_COMMIT=$$system("git log -1 --format=oneline | cut -d' ' -f1")
|
||||||
|
|
||||||
|
VERSION="1.3.11"
|
||||||
|
EXTENDED_VERSION="$${VERSION}-$${GIT_COMMIT}"
|
||||||
|
|
||||||
INCLUDEPATH += plugins
|
INCLUDEPATH += plugins
|
||||||
|
|
||||||
@@ -53,6 +61,7 @@ CONFIG += c++17
|
|||||||
DEFINES+=APP_VERSION=\\\"$$VERSION\\\"
|
DEFINES+=APP_VERSION=\\\"$$VERSION\\\"
|
||||||
DEFINES+=APP_BUILD_DATE=\\\"$$BUILD_DATE\\\"
|
DEFINES+=APP_BUILD_DATE=\\\"$$BUILD_DATE\\\"
|
||||||
DEFINES+=APP_BUILD_TIME=\\\"$$BUILD_TIME\\\"
|
DEFINES+=APP_BUILD_TIME=\\\"$$BUILD_TIME\\\"
|
||||||
|
DEFINES+=APP_EXTENDED_VERSION=\\\"$$EXTENDED_VERSION\\\"
|
||||||
|
|
||||||
QMAKE_CXXFLAGS += -g
|
QMAKE_CXXFLAGS += -g
|
||||||
QMAKE_CXXFLAGS += -Wno-deprecated-copy
|
QMAKE_CXXFLAGS += -Wno-deprecated-copy
|
||||||
|
@@ -26,12 +26,54 @@ GitClient::GitClient(QString const &customerNrStr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::gitCloneCustomerRepository() {
|
bool GitClient::gitCloneCustomerRepository() {
|
||||||
QString gitCommand("git clone ");
|
/* Blobless clone
|
||||||
|
==============
|
||||||
|
|
||||||
|
When using the --filter=blob:none option, the initial git clone will
|
||||||
|
download all reachable commits and trees, and only download the blobs
|
||||||
|
for commits when you do a git checkout. This includes the first checkout
|
||||||
|
inside the git clone operation.
|
||||||
|
|
||||||
|
The important thing to notice is that we have a copy of every blob at
|
||||||
|
HEAD but the blobs in the history are not present. If your repository
|
||||||
|
has a deep history full of large blobs, then this option can
|
||||||
|
significantly reduce your git clone times. The commit and tree data is
|
||||||
|
still present, so any subsequent git checkout only needs to download
|
||||||
|
the missing blobs. The Git client knows how to batch these requests to
|
||||||
|
ask the server only for the missing blobs.
|
||||||
|
|
||||||
|
Further, when running git fetch in a blobless clone, the server only
|
||||||
|
sends the new commits and trees. The new blobs are downloaded only
|
||||||
|
after a git checkout. Note that git pull runs git fetch and then git
|
||||||
|
merge, so it will download the necessary blobs during the git merge
|
||||||
|
command.
|
||||||
|
|
||||||
|
When using a blobless clone, you will trigger a blob download whenever
|
||||||
|
you need the contents of a file, but you will not need one if you only
|
||||||
|
need the OID (object-id) of a file. This means that git log can detect
|
||||||
|
which commits changed a given path without needing to download extra
|
||||||
|
data.
|
||||||
|
|
||||||
|
This means that blobless clones can perform commands like git
|
||||||
|
merge-base, git log, or even git log -- <path> with the same performance
|
||||||
|
as a full clone.
|
||||||
|
|
||||||
|
Commands like git diff or git blame <path> require the contents of the
|
||||||
|
paths to compute diffs, so these will trigger blob downloads the first
|
||||||
|
time they are run. However, the good news is that after that you will
|
||||||
|
have those blobs in your repository and do not need to download them a
|
||||||
|
second time. Most developers only need to run git blame on a small
|
||||||
|
number of files, so this tradeoff of a slightly slower git blame command
|
||||||
|
is worth the faster clone and fetch times.
|
||||||
|
|
||||||
|
Note: git v2.18 does not support treeless clones: --filter=tree:0.
|
||||||
|
*/
|
||||||
|
QString gitCommand("git clone --filter=blob:none ");
|
||||||
gitCommand += m_repositoryPath;
|
gitCommand += m_repositoryPath;
|
||||||
Command c(gitCommand);
|
Command c(gitCommand);
|
||||||
|
|
||||||
qInfo() << "IN CURRENT WD" << m_workingDirectory
|
qInfo() << "IN CURRENT WD" << m_workingDirectory
|
||||||
<< "CLONE" << m_repositoryPath << "...";
|
<< "CLONE VIA COMMAND" << gitCommand;
|
||||||
|
|
||||||
if (c.execute(m_workingDirectory)) { // execute the command in wd
|
if (c.execute(m_workingDirectory)) { // execute the command in wd
|
||||||
QString const result = c.getCommandResult();
|
QString const result = c.getCommandResult();
|
||||||
@@ -47,8 +89,13 @@ bool GitClient::gitCloneCustomerRepository() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Utils::printCriticalErrorMsg(
|
||||||
|
QString("ERROR CLONE RESULT HAS WRONG FORMAT. rcc=%1 CLONE_RESULT=%2")
|
||||||
|
.arg(re.captureCount())
|
||||||
|
.arg(result));
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
Utils::printCriticalErrorMsg(QString("ERROR CLONE RESULT HAS WRONG FORMAT. CLONE_RESULT=") + result);
|
Utils::printCriticalErrorMsg("ERROR CLONE RESULT IS EMPTY");
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -218,11 +265,11 @@ std::optional<QStringList> GitClient::gitDiff(QString const &commits) {
|
|||||||
/*
|
/*
|
||||||
Hat sich nichts geaendert, so werden auch keine Commits <>..<> angezeigt
|
Hat sich nichts geaendert, so werden auch keine Commits <>..<> angezeigt
|
||||||
*/
|
*/
|
||||||
std::optional<QString> GitClient::gitFetch() {
|
std::optional<QString> GitClient::gitPull() {
|
||||||
if (QDir(m_customerRepository).exists()) {
|
if (QDir(m_customerRepository).exists()) {
|
||||||
qInfo() << "BRANCH NAME" << m_branchName;
|
qInfo() << "BRANCH NAME" << m_branchName;
|
||||||
|
|
||||||
Command c("git fetch");
|
Command c("git pull");
|
||||||
if (c.execute(m_customerRepository)) {
|
if (c.execute(m_customerRepository)) {
|
||||||
QString const s = c.getCommandResult().trimmed();
|
QString const s = c.getCommandResult().trimmed();
|
||||||
if (!s.isEmpty()) {
|
if (!s.isEmpty()) {
|
||||||
@@ -248,59 +295,38 @@ std::optional<QString> GitClient::gitFetch() {
|
|||||||
if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches
|
if (re.captureCount() == 3) { // start with full match (0), then the other 3 matches
|
||||||
return match.captured(2);
|
return match.captured(2);
|
||||||
} else {
|
} else {
|
||||||
emit m_worker->showErrorMessage("git fetch",
|
emit m_worker->showErrorMessage("git pull",
|
||||||
QString("(wrong cap-count (%1)").arg(re.captureCount()));
|
QString("(wrong cap-count (%1)").arg(re.captureCount()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
emit m_worker->showErrorMessage("git fetch",
|
emit m_worker->showErrorMessage("git pull",
|
||||||
"no regex-match for commits");
|
"no regex-match for commits");
|
||||||
Utils::printCriticalErrorMsg("NO REGEX MATCH FOR COMMITS");
|
Utils::printCriticalErrorMsg("NO REGEX MATCH FOR COMMITS");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
emit m_worker->showErrorMessage("git fetch",
|
emit m_worker->showErrorMessage("git pull",
|
||||||
QString("unkown branch name ") + m_branchName);
|
QString("unkown branch name ") + m_branchName);
|
||||||
Utils::printCriticalErrorMsg("UNKNOWN BRANCH NAME " + m_branchName);
|
Utils::printCriticalErrorMsg("UNKNOWN BRANCH NAME " + m_branchName);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
emit m_worker->showErrorMessage("git fetch",
|
emit m_worker->showErrorMessage("git pull",
|
||||||
QString("wrong format for result of 'git fetch' ") + s);
|
QString("wrong format for result of 'git pull' ") + s);
|
||||||
Utils::printCriticalErrorMsg(QString("WRONG FORMAT FOR RESULT OF 'GIT FETCH' ") + s);
|
Utils::printCriticalErrorMsg(QString("WRONG FORMAT FOR RESULT OF 'GIT FETCH' ") + s);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// emit m_worker->showErrorMessage("git fetch", "empty result for 'git fetch'");
|
// emit m_worker->showErrorMessage("git fetch", "empty result for 'git fetch'");
|
||||||
Utils::printInfoMsg("EMPTY RESULT FOR 'GIT FETCH'");
|
Utils::printInfoMsg("EMPTY RESULT FOR 'GIT PULL'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
emit m_worker->showErrorMessage("git fetch", QString("repository ") + m_customerRepository + " does not exist");
|
emit m_worker->showErrorMessage("git pull", QString("repository ") + m_customerRepository + " does not exist");
|
||||||
Utils::printCriticalErrorMsg(QString("REPOSITORY ") + m_customerRepository + " DOES NOT EXIST");
|
Utils::printCriticalErrorMsg(QString("REPOSITORY ") + m_customerRepository + " DOES NOT EXIST");
|
||||||
}
|
}
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GitClient::gitFetchAndDiff() {
|
|
||||||
if (gitFetch()) {
|
|
||||||
QString gitCommand("git diff --compact-summary HEAD..FETCH_HEAD");
|
|
||||||
Command c(gitCommand);
|
|
||||||
return c.execute(m_workingDirectory);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GitClient::gitPull() {
|
|
||||||
if (QDir(m_customerRepository).exists()) {
|
|
||||||
Command c("git pull");
|
|
||||||
if (c.execute(m_customerRepository)) {
|
|
||||||
qInfo() << "PULLED INTO" << m_customerRepository;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Utils::printCriticalErrorMsg(QString("PULL INTO " + m_customerRepository + " FAILED"));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::optional<QStringList> GitClient::gitMerge() {
|
std::optional<QStringList> GitClient::gitMerge() {
|
||||||
Command c("git merge");
|
Command c("git merge");
|
||||||
if (c.execute(m_workingDirectory)) {
|
if (c.execute(m_workingDirectory)) {
|
||||||
|
@@ -43,9 +43,7 @@ class GitClient : public QObject {
|
|||||||
|
|
||||||
bool gitCloneAndCheckoutBranch();
|
bool gitCloneAndCheckoutBranch();
|
||||||
|
|
||||||
std::optional<QString> gitFetch();
|
std::optional<QString> gitPull();
|
||||||
bool gitFetchAndDiff();
|
|
||||||
bool gitPull();
|
|
||||||
std::optional<QStringList> gitDiff(QString const &commit);
|
std::optional<QStringList> gitDiff(QString const &commit);
|
||||||
std::optional<QStringList> gitMerge();
|
std::optional<QStringList> gitMerge();
|
||||||
|
|
||||||
|
@@ -631,6 +631,9 @@ QString IsmasClient::updateOfPSASendVersion(PSAInstalled const &psa) {
|
|||||||
"},"
|
"},"
|
||||||
"\"ATBQT\" : {"
|
"\"ATBQT\" : {"
|
||||||
"\"VERSION\" : \"%s\""
|
"\"VERSION\" : \"%s\""
|
||||||
|
"},"
|
||||||
|
"\"ATB-UPDATE-TOOL\" : {"
|
||||||
|
"\"VERSION\" : \"%s\""
|
||||||
"}"
|
"}"
|
||||||
"},"
|
"},"
|
||||||
"\"PLUGINS\" : {"
|
"\"PLUGINS\" : {"
|
||||||
@@ -758,6 +761,7 @@ QString IsmasClient::updateOfPSASendVersion(PSAInstalled const &psa) {
|
|||||||
|
|
||||||
psa.sw.apismVersion.toStdString().c_str(),
|
psa.sw.apismVersion.toStdString().c_str(),
|
||||||
psa.sw.atbQTVersion.toStdString().c_str(),
|
psa.sw.atbQTVersion.toStdString().c_str(),
|
||||||
|
psa.sw.atbUpdateToolVersion.toStdString().c_str(),
|
||||||
|
|
||||||
psa.pluginVersion.deviceController.toStdString().c_str(),
|
psa.pluginVersion.deviceController.toStdString().c_str(),
|
||||||
psa.pluginVersion.ingenicoISelfCC.toStdString().c_str(),
|
psa.pluginVersion.ingenicoISelfCC.toStdString().c_str(),
|
||||||
|
@@ -48,6 +48,7 @@ struct PSAInstalled {
|
|||||||
struct SoftWare {
|
struct SoftWare {
|
||||||
QString apismVersion;
|
QString apismVersion;
|
||||||
QString atbQTVersion;
|
QString atbQTVersion;
|
||||||
|
QString atbUpdateToolVersion;
|
||||||
} sw;
|
} sw;
|
||||||
|
|
||||||
struct PluginVersion {
|
struct PluginVersion {
|
||||||
@@ -98,6 +99,7 @@ struct PSAInstalled {
|
|||||||
|
|
||||||
sw.apismVersion = "N/A";
|
sw.apismVersion = "N/A";
|
||||||
sw.atbQTVersion = "N/A";
|
sw.atbQTVersion = "N/A";
|
||||||
|
sw.atbUpdateToolVersion = "N/A";
|
||||||
|
|
||||||
pluginVersion.deviceController = "N/A";
|
pluginVersion.deviceController = "N/A";
|
||||||
pluginVersion.ingenicoISelfCC = "N/A";
|
pluginVersion.ingenicoISelfCC = "N/A";
|
||||||
|
63
main.cpp
63
main.cpp
@@ -112,25 +112,67 @@ int main(int argc, char *argv[]) {
|
|||||||
QCoreApplication::translate("main", "Start ATBUpdateTool in dry-run-mode. No actual actions."));
|
QCoreApplication::translate("main", "Start ATBUpdateTool in dry-run-mode. No actual actions."));
|
||||||
parser.addOption(dryRunOption);
|
parser.addOption(dryRunOption);
|
||||||
|
|
||||||
|
QCommandLineOption extendedVersionOption(QStringList() << "V" << "extended-version",
|
||||||
|
QCoreApplication::translate("main", "Show extended version (including last git commit)."));
|
||||||
|
parser.addOption(extendedVersionOption);
|
||||||
|
|
||||||
|
QCommandLineOption yoctoVersionOption(QStringList() << "y" << "yocto-version",
|
||||||
|
QCoreApplication::translate("main", "Show yocto version of ATBUpdateTool."));
|
||||||
|
parser.addOption(yoctoVersionOption);
|
||||||
|
|
||||||
|
QCommandLineOption yoctoInstallStatusOption(QStringList() << "Y" << "yocto-install",
|
||||||
|
QCoreApplication::translate("main", "Show yocto install status of ATBUpdateTool."));
|
||||||
|
parser.addOption(yoctoInstallStatusOption);
|
||||||
|
|
||||||
// Process the actual command line arguments given by the user
|
// Process the actual command line arguments given by the user
|
||||||
parser.process(a);
|
parser.process(a);
|
||||||
QString plugInDir = parser.value(pluginDirectoryOption);
|
QString plugInDir = parser.value(pluginDirectoryOption);
|
||||||
QString plugInName = parser.value(pluginNameOption);
|
QString plugInName = parser.value(pluginNameOption);
|
||||||
QString workingDir = parser.value(workingDirectoryOption);
|
QString workingDir = parser.value(workingDirectoryOption);
|
||||||
bool dryRun = parser.isSet(dryRunOption);
|
bool const dryRun = parser.isSet(dryRunOption);
|
||||||
|
bool const showYoctoVersion = parser.isSet(yoctoVersionOption);
|
||||||
|
bool const showYoctoInstallStatus = parser.isSet(yoctoInstallStatusOption);
|
||||||
|
bool const showExtendedVersion = parser.isSet(extendedVersionOption);
|
||||||
QString const rtPath = QCoreApplication::applicationDirPath();
|
QString const rtPath = QCoreApplication::applicationDirPath();
|
||||||
|
|
||||||
|
int machineNr = Utils::read1stLineOfFile("/etc/machine_nr");
|
||||||
|
int customerNr = Utils::read1stLineOfFile("/etc/cust_nr");
|
||||||
|
int zoneNr = Utils::read1stLineOfFile("/etc/zone_nr");
|
||||||
|
QString const branchName = (zoneNr != 0)
|
||||||
|
? QString("zg1/zone%1").arg(zoneNr) : "master";
|
||||||
|
|
||||||
|
QThread::currentThread()->setObjectName("main thread");
|
||||||
|
qInfo() << "Main thread" << QThread::currentThreadId();
|
||||||
|
|
||||||
|
if (showExtendedVersion) {
|
||||||
|
printf(APP_EXTENDED_VERSION"\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showYoctoVersion) {
|
||||||
|
printf("%s\n", Worker::getATBUpdateToolYoctoVersion().toStdString().c_str());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showYoctoInstallStatus) {
|
||||||
|
printf("%s\n", Worker::getATBUpdateToolYoctoInstallationStatus().toStdString().c_str());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!QDir(plugInDir).exists()) {
|
if (!QDir(plugInDir).exists()) {
|
||||||
qCritical() << plugInDir
|
qCritical() << plugInDir
|
||||||
<< "does not exists, but has to contain dc-library";
|
<< "does not exists, but has to contain dc-library";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
qInfo() << "pwd ..............." << rtPath;
|
qInfo() << "pwd ......................" << rtPath;
|
||||||
qInfo() << "plugInDir ........." << plugInDir;
|
qInfo() << "plugInDir ................" << plugInDir;
|
||||||
qInfo() << "plugInName ........" << plugInName;
|
qInfo() << "plugInName ..............." << plugInName;
|
||||||
qInfo() << "workingDir ........" << workingDir;
|
qInfo() << "workingDir ..............." << workingDir;
|
||||||
qInfo() << "dryRun ............" << dryRun;
|
qInfo() << "dryRun ..................." << dryRun;
|
||||||
|
qInfo() << "extended-version ........." << APP_EXTENDED_VERSION;
|
||||||
|
//qInfo() << "yocto-version ............" << Worker::getATBUpdateToolYoctoVersion();
|
||||||
|
//qInfo() << "yocto-install-status ....." << Worker::getATBUpdateToolYoctoInstallationStatus();
|
||||||
|
|
||||||
// before loading the library, delete all possible shared memory segments
|
// before loading the library, delete all possible shared memory segments
|
||||||
#if defined Q_OS_LINUX || defined Q_OS_UNIX
|
#if defined Q_OS_LINUX || defined Q_OS_UNIX
|
||||||
@@ -143,15 +185,6 @@ int main(int argc, char *argv[]) {
|
|||||||
hw->dc_autoRequest(true);
|
hw->dc_autoRequest(true);
|
||||||
// hw->dc_openSerial(5, "115200", "ttymxc2", 1);
|
// hw->dc_openSerial(5, "115200", "ttymxc2", 1);
|
||||||
|
|
||||||
int machineNr = Utils::read1stLineOfFile("/etc/machine_nr");
|
|
||||||
int customerNr = Utils::read1stLineOfFile("/etc/cust_nr");
|
|
||||||
int zoneNr = Utils::read1stLineOfFile("/etc/zone_nr");
|
|
||||||
QString const branchName = (zoneNr != 0)
|
|
||||||
? QString("zg1/zone%1").arg(zoneNr) : "master";
|
|
||||||
|
|
||||||
QThread::currentThread()->setObjectName("main thread");
|
|
||||||
qInfo() << "Main thread" << QThread::currentThreadId();
|
|
||||||
|
|
||||||
Worker worker(customerNr,
|
Worker worker(customerNr,
|
||||||
machineNr,
|
machineNr,
|
||||||
zoneNr,
|
zoneNr,
|
||||||
|
14
utils.cpp
14
utils.cpp
@@ -47,15 +47,21 @@ QString Utils::zoneName(quint8 i) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Utils::printCriticalErrorMsg(QString const &errorMsg) {
|
void Utils::printCriticalErrorMsg(QString const &errorMsg) {
|
||||||
qCritical() << QString(80, '!');
|
qCritical() << QString(80, 'E');
|
||||||
qCritical() << errorMsg;
|
qCritical() << errorMsg;
|
||||||
qCritical() << QString(80, '!');
|
qCritical() << QString(80, 'E');
|
||||||
|
}
|
||||||
|
|
||||||
|
void Utils::printUpdateStatusMsg(QString const &updateMsg) {
|
||||||
|
qCritical() << QString(80, 'U');
|
||||||
|
qCritical() << updateMsg;
|
||||||
|
qCritical() << QString(80, 'U');
|
||||||
}
|
}
|
||||||
|
|
||||||
void Utils::printInfoMsg(QString const &infoMsg) {
|
void Utils::printInfoMsg(QString const &infoMsg) {
|
||||||
qCritical() << QString(80, '=');
|
qCritical() << QString(80, 'I');
|
||||||
qCritical() << infoMsg;
|
qCritical() << infoMsg;
|
||||||
qCritical() << QString(80, '=');
|
qCritical() << QString(80, 'I');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
utils.h
1
utils.h
@@ -14,6 +14,7 @@ namespace Utils {
|
|||||||
QString zoneName(quint8 i);
|
QString zoneName(quint8 i);
|
||||||
void printCriticalErrorMsg(QString const &errorMsg);
|
void printCriticalErrorMsg(QString const &errorMsg);
|
||||||
void printInfoMsg(QString const &infoMsg);
|
void printInfoMsg(QString const &infoMsg);
|
||||||
|
void printUpdateStatusMsg(QString const &updateMsg);
|
||||||
void printLineEditInfo(QStringList const &lines);
|
void printLineEditInfo(QStringList const &lines);
|
||||||
QString getTariffLoadTime(QString fileName);
|
QString getTariffLoadTime(QString fileName);
|
||||||
QString rstrip(QString const &str);
|
QString rstrip(QString const &str);
|
||||||
|
42
worker.cpp
42
worker.cpp
@@ -58,6 +58,7 @@ Worker::Worker(int customerNr,
|
|||||||
, m_gc(m_customerNrStr, m_customerRepository, m_workingDirectory, m_branchName, this)
|
, m_gc(m_customerNrStr, m_customerRepository, m_workingDirectory, m_branchName, this)
|
||||||
, m_osVersion(getOsVersion())
|
, m_osVersion(getOsVersion())
|
||||||
, m_atbqtVersion(getATBQTVersion())
|
, m_atbqtVersion(getATBQTVersion())
|
||||||
|
, m_atbUpdateToolVersion(getATBUpdateToolVersion())
|
||||||
, m_cpuSerial(getCPUSerial())
|
, m_cpuSerial(getCPUSerial())
|
||||||
, m_pluginVersionATBDeciceController(getPluginVersion("/opt/app/ATBAPP/plugins/libATBDeviceControllerPlugin.so"))
|
, m_pluginVersionATBDeciceController(getPluginVersion("/opt/app/ATBAPP/plugins/libATBDeviceControllerPlugin.so"))
|
||||||
, m_pluginVersionIngenicoISelf(getPluginVersion("/opt/app/ATBAPP/plugins/libIngenicoISelf_CCPlugin.so"))
|
, m_pluginVersionIngenicoISelf(getPluginVersion("/opt/app/ATBAPP/plugins/libIngenicoISelf_CCPlugin.so"))
|
||||||
@@ -71,6 +72,7 @@ Worker::Worker(int customerNr,
|
|||||||
, m_filesToUpdate()
|
, m_filesToUpdate()
|
||||||
, m_updateProcessRunning(true)
|
, m_updateProcessRunning(true)
|
||||||
, m_returnCode(0)
|
, m_returnCode(0)
|
||||||
|
, m_mainWindow(nullptr) /* contains plugin */
|
||||||
, m_progressValue(0)
|
, m_progressValue(0)
|
||||||
//, m_withoutIsmasDirectPort(true) /* useful for testing */ {
|
//, m_withoutIsmasDirectPort(true) /* useful for testing */ {
|
||||||
, m_withoutIsmasDirectPort(false) /* useful for testing */ {
|
, m_withoutIsmasDirectPort(false) /* useful for testing */ {
|
||||||
@@ -78,12 +80,6 @@ Worker::Worker(int customerNr,
|
|||||||
this->setObjectName("worker-object");
|
this->setObjectName("worker-object");
|
||||||
QDir::setCurrent(m_workingDirectory);
|
QDir::setCurrent(m_workingDirectory);
|
||||||
|
|
||||||
// restart apism to make sure it is running ?
|
|
||||||
// Command c("systemctl restart apism");
|
|
||||||
// if (c.execute("/tmp")) {
|
|
||||||
// QThread::sleep(10); // give APISM some time to reconnect
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (std::optional<QString> v = getApismVersion()) {
|
if (std::optional<QString> v = getApismVersion()) {
|
||||||
m_apismVersion = v.value();
|
m_apismVersion = v.value();
|
||||||
}
|
}
|
||||||
@@ -103,6 +99,7 @@ Worker::Worker(int customerNr,
|
|||||||
qInfo() << "PLUGIN_NAME ................" << m_pluginName;
|
qInfo() << "PLUGIN_NAME ................" << m_pluginName;
|
||||||
qInfo() << "WORKING_DIRECTORY .........." << m_workingDirectory;
|
qInfo() << "WORKING_DIRECTORY .........." << m_workingDirectory;
|
||||||
qInfo() << "APISM VERSION .............." << m_apismVersion;
|
qInfo() << "APISM VERSION .............." << m_apismVersion;
|
||||||
|
qInfo() << "ATB UPDATE TOOL VERSION ...." << m_atbUpdateToolVersion;
|
||||||
|
|
||||||
this->moveToThread(&m_workerThread);
|
this->moveToThread(&m_workerThread);
|
||||||
m_workerThread.start();
|
m_workerThread.start();
|
||||||
@@ -731,7 +728,7 @@ bool Worker::filesToUpdate() {
|
|||||||
// always execute contents of opkg_commands-file
|
// always execute contents of opkg_commands-file
|
||||||
m_filesToUpdate << "etc/psa_update/opkg_commands";
|
m_filesToUpdate << "etc/psa_update/opkg_commands";
|
||||||
|
|
||||||
if (std::optional<QString> changes = m_gc.gitFetch()) {
|
if (std::optional<QString> changes = m_gc.gitPull()) {
|
||||||
stopProgressLoop();
|
stopProgressLoop();
|
||||||
int progress = (m_mainWindow->progressValue()/10) + 10;
|
int progress = (m_mainWindow->progressValue()/10) + 10;
|
||||||
setProgress(progress);
|
setProgress(progress);
|
||||||
@@ -984,6 +981,30 @@ QString Worker::getOsVersion() const {
|
|||||||
return "N/A";
|
return "N/A";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Worker::getATBUpdateToolYoctoVersion() {
|
||||||
|
if (QFile::exists("/var/lib/opkg/status")) {
|
||||||
|
QString const cmd = QString("echo -n $(cat /var/lib/opkg/status | grep -A1 atbupdatetool | tail -n 1 | cut -d':' -f2 | cut -d' ' -f2)");
|
||||||
|
Command c("bash");
|
||||||
|
if (c.execute("/tmp", QStringList() << "-c" << cmd)) {
|
||||||
|
return c.getCommandResult(); // 1.3.9+git0+226553a8ab-r0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "N/A";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Worker::getATBUpdateToolYoctoInstallationStatus() {
|
||||||
|
if (QFile::exists("/var/lib/opkg/status")) {
|
||||||
|
QString const cmd = QString("echo -n $(cat /var/lib/opkg/status | grep -A3 atbupdatetool | tail -n 1 | cut -d':' -f2 | cut -d' ' -f2,3,4)");
|
||||||
|
Command c("bash");
|
||||||
|
if (c.execute("/tmp", QStringList() << "-c" << cmd)) {
|
||||||
|
return c.getCommandResult(); // 1.3.9+git0+226553a8ab-r0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "N/A";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QString Worker::getATBQTVersion() const {
|
QString Worker::getATBQTVersion() const {
|
||||||
QString const cmd = QString("echo -n $(/opt/app/ATBAPP/ATBQT -v | head -n 2 | cut -d':' -f2)");
|
QString const cmd = QString("echo -n $(/opt/app/ATBAPP/ATBQT -v | head -n 2 | cut -d':' -f2)");
|
||||||
Command c("bash");
|
Command c("bash");
|
||||||
@@ -993,6 +1014,10 @@ QString Worker::getATBQTVersion() const {
|
|||||||
return "N/A";
|
return "N/A";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString Worker::getATBUpdateToolVersion() const {
|
||||||
|
return APP_EXTENDED_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
QString Worker::getCPUSerial() const {
|
QString Worker::getCPUSerial() const {
|
||||||
QString const cmd = QString("echo -n $(cat /proc/cpuinfo | grep -i Serial | cut -d':' -f2)");
|
QString const cmd = QString("echo -n $(cat /proc/cpuinfo | grep -i Serial | cut -d':' -f2)");
|
||||||
Command c("bash");
|
Command c("bash");
|
||||||
@@ -1136,7 +1161,8 @@ PSAInstalled Worker::getPSAInstalled() {
|
|||||||
if (std::optional<QString> v = getApismVersion()) {
|
if (std::optional<QString> v = getApismVersion()) {
|
||||||
psaInstalled.sw.apismVersion = v.value();
|
psaInstalled.sw.apismVersion = v.value();
|
||||||
}
|
}
|
||||||
psaInstalled.sw.atbQTVersion = m_atbqtVersion;
|
psaInstalled.sw.atbQTVersion = getATBQTVersion();
|
||||||
|
psaInstalled.sw.atbUpdateToolVersion = m_atbUpdateToolVersion;
|
||||||
|
|
||||||
psaInstalled.pluginVersion.deviceController = m_pluginVersionATBDeciceController;
|
psaInstalled.pluginVersion.deviceController = m_pluginVersionATBDeciceController;
|
||||||
psaInstalled.pluginVersion.ingenicoISelfCC = m_pluginVersionIngenicoISelf;
|
psaInstalled.pluginVersion.ingenicoISelfCC = m_pluginVersionIngenicoISelf;
|
||||||
|
6
worker.h
6
worker.h
@@ -92,6 +92,7 @@ class Worker : public QObject {
|
|||||||
GitClient m_gc;
|
GitClient m_gc;
|
||||||
QString const m_osVersion;
|
QString const m_osVersion;
|
||||||
QString const m_atbqtVersion;
|
QString const m_atbqtVersion;
|
||||||
|
QString const m_atbUpdateToolVersion;
|
||||||
QString const m_cpuSerial;
|
QString const m_cpuSerial;
|
||||||
QString const m_pluginVersionATBDeciceController;
|
QString const m_pluginVersionATBDeciceController;
|
||||||
QString const m_pluginVersionIngenicoISelf;
|
QString const m_pluginVersionIngenicoISelf;
|
||||||
@@ -119,6 +120,7 @@ class Worker : public QObject {
|
|||||||
bool executeOpkgCommand(QString opkgCommand);
|
bool executeOpkgCommand(QString opkgCommand);
|
||||||
QString getOsVersion() const;
|
QString getOsVersion() const;
|
||||||
QString getATBQTVersion() const;
|
QString getATBQTVersion() const;
|
||||||
|
QString getATBUpdateToolVersion() const;
|
||||||
QString getCPUSerial() const;
|
QString getCPUSerial() const;
|
||||||
QString getRaucVersion() const;
|
QString getRaucVersion() const;
|
||||||
QString getOpkgVersion() const;
|
QString getOpkgVersion() const;
|
||||||
@@ -128,6 +130,9 @@ class Worker : public QObject {
|
|||||||
qint64 getFileSize(QString const &fileName) const;
|
qint64 getFileSize(QString const &fileName) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static QString getATBUpdateToolYoctoVersion();
|
||||||
|
static QString getATBUpdateToolYoctoInstallationStatus();
|
||||||
|
|
||||||
static const QString UPDATE_STEP_OK;
|
static const QString UPDATE_STEP_OK;
|
||||||
static const QString UPDATE_STEP_DONE;
|
static const QString UPDATE_STEP_DONE;
|
||||||
static const QString UPDATE_STEP_FAIL;
|
static const QString UPDATE_STEP_FAIL;
|
||||||
@@ -162,6 +167,7 @@ public:
|
|||||||
int customerNr() const { return m_customerNr; }
|
int customerNr() const { return m_customerNr; }
|
||||||
int zoneNr() const { return m_zoneNr; }
|
int zoneNr() const { return m_zoneNr; }
|
||||||
QString apismVersion() const { return m_apismVersion; }
|
QString apismVersion() const { return m_apismVersion; }
|
||||||
|
QString atbUpdateToolVersion() const { return m_atbUpdateToolVersion; }
|
||||||
|
|
||||||
MainWindow *mainWindow() { return m_mainWindow; }
|
MainWindow *mainWindow() { return m_mainWindow; }
|
||||||
MainWindow const *mainWindow() const { return m_mainWindow; }
|
MainWindow const *mainWindow() const { return m_mainWindow; }
|
||||||
|
Reference in New Issue
Block a user