Adds first successful release run (tbc)

This commit is contained in:
torsten committed 2026-10-12 15:02:02 +00:00
1 parent 444ac417bf
commit 1a38b88229
22 files changed
+89 -34

No files matched your search

@@ -972,6 +972,11 @@ if(NOT DEFINED RELEASE_BUILD)
set(RELEASE_BUILD OFF CACHE BOOL "Build only the first release modules (TetraIF, Z, Lts/Common)") set(RELEASE_BUILD OFF CACHE BOOL "Build only the first release modules (TetraIF, Z, Lts/Common)")
endif() endif()
# For release builds, disable ArcGIS (not in release scope, requires Qt6Location which is not available)
if(RELEASE_BUILD)
set(BUILD_ARCGIS OFF CACHE BOOL "Build ArcGIS SDK dependent modules" FORCE)
endif()
# Add only guarded subdirectories # Add only guarded subdirectories
if(RELEASE_BUILD) if(RELEASE_BUILD)
message(STATUS "RELEASE_BUILD=ON: Building only TetraIF, Z/src, and Lts/Common") message(STATUS "RELEASE_BUILD=ON: Building only TetraIF, Z/src, and Lts/Common")
@@ -32,6 +32,7 @@ NGL_ADD_LIBRARY(AAR SV tabPluginTetraJson MODULE ${SRCS})
NGL_INSTALL_TARGET(tabPluginTetraJson) NGL_INSTALL_TARGET(tabPluginTetraJson)
NGL_TARGET_LINK_LIBRARIES(tabPluginTetraJson NGL_TARGET_LINK_LIBRARIES(tabPluginTetraJson
CoPrtCnv CoPrtCnv
LogViewLogger
NGLLogger NGLLogger
nglsettings nglsettings
Qt6::Core Qt6::Core
@@ -6,6 +6,7 @@
#include <QtCore/QJsonDocument> #include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject> #include <QtCore/QJsonObject>
#include <NGLLogger/NGLLoggerBootstrap.h> #include <NGLLogger/NGLLoggerBootstrap.h>
#include <TetraIF/LogView/logger.h>
namespace TetraRadio namespace TetraRadio
{ {
@@ -13,8 +14,7 @@ namespace TetraRadio
ConvertFromJson::ConvertFromJson(const std::shared_ptr<TrainingAreaBase::RecvFromTab> &rxHandler, ConvertFromJson::ConvertFromJson(const std::shared_ptr<TrainingAreaBase::RecvFromTab> &rxHandler,
const char *loggerName) : m_rxHandler(rxHandler) const char *loggerName) : m_rxHandler(rxHandler)
, m_bWarnedOnce(false) , m_bWarnedOnce(false)
.getNGLLogger(loggerName)), , m_logger(N_LogView::getLogger(loggerName)) {}
m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger()) {}
bool ConvertFromJson::handleTelegram(const QByteArray &baJson, int &recvCounter) bool ConvertFromJson::handleTelegram(const QByteArray &baJson, int &recvCounter)
{ {
@@ -5,6 +5,7 @@
#include <NGLLogger/NGLLoggerBootstrap.h> #include <NGLLogger/NGLLoggerBootstrap.h>
#include <QtCore/QJsonDocument> #include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject> #include <QtCore/QJsonObject>
#include <TetraIF/LogView/logger.h>
namespace TetraRadio namespace TetraRadio
{ {
@@ -12,7 +13,7 @@ ConvertToJson::ConvertToJson(const char *loggerName)
: QObject() : QObject()
, SendToTab() , SendToTab()
, m_bConnected(false) , m_bConnected(false)
.getNGLLogger(loggerName)) , m_logger(N_LogView::getLogger(loggerName))
{ {
resetSendCounter(); resetSendCounter();
} }
@@ -15,6 +15,7 @@
#include <QtCore/QSettings> #include <QtCore/QSettings>
#include <NGLLogger/NGLLoggerBootstrap.h> #include <NGLLogger/NGLLoggerBootstrap.h>
#include <qglobal.h> #include <qglobal.h>
#include <TetraIF/LogView/logger.h>
namespace TetraRadio namespace TetraRadio
{ {
@@ -34,13 +35,14 @@ std::shared_ptr<TrainingAreaBase::Plugin::Interface> TetraJsonPlugin::createInte
TetraJsonInterfaceImpl::TetraJsonInterfaceImpl(TrainingAreaBase::Plugin::DataProvider *pdp, TetraJsonInterfaceImpl::TetraJsonInterfaceImpl(TrainingAreaBase::Plugin::DataProvider *pdp,
const std::shared_ptr<TrainingAreaBase::RecvFromTab> &recvFromTabCb, const std::shared_ptr<TrainingAreaBase::RecvFromTab> &recvFromTabCb,
NGL::Settings *settings) NGL::Settings *settings)
: m_socketDispatcher(new SocketDispatcher(pdp, recvFromTabCb)) : m_logger(N_LogView::getLogger("TAB.Plugin.TetraJsonInterfaceImpl"))
, m_socketDispatcher(new SocketDispatcher(pdp, recvFromTabCb))
, m_pdp(pdp) , m_pdp(pdp)
, m_prtCnvApp(nullptr) , m_prtCnvApp(nullptr)
, m_exerciseId(0) , m_exerciseId(0)
, m_radioGrpId(0) , m_radioGrpId(0)
.getNGLLogger("TAB.Plugin.TetraJsonInterfaceImpl"))
{ {
Q_UNUSED(settings);
N_CoPrtCnv::CoPrtCnvTelegramConverter::setUse2BytesForSingleFireDiameter( N_CoPrtCnv::CoPrtCnvTelegramConverter::setUse2BytesForSingleFireDiameter(
settings->settings()->value(QLatin1String("AES/use2BytesForSingleFireDiameter"), true).toBool()); settings->settings()->value(QLatin1String("AES/use2BytesForSingleFireDiameter"), true).toBool());
N_CoPrtCnv::CoPrtCnvTelegramConverter::setUsePvSan( N_CoPrtCnv::CoPrtCnvTelegramConverter::setUsePvSan(
@@ -97,19 +99,14 @@ bool TetraJsonInterfaceImpl::updatePrtCnv()
} }
ProjectDataManagement::RadioGroup radioGrp = m_pdp->exerciseRadioGroup(); ProjectDataManagement::RadioGroup radioGrp = m_pdp->exerciseRadioGroup();
Q_UNUSED(radioGrp);
{ {
QSettings s(iniFileOut(), QSettings::IniFormat); QSettings s(iniFileOut(), QSettings::IniFormat);
s.setValue(QStringLiteral("Common/LogTelegramPath"), QStringLiteral("logdata/ex_%1").arg(m_exerciseId)); s.setValue(QStringLiteral("Common/LogTelegramPath"), QStringLiteral("logdata/ex_%1").arg(m_exerciseId));
s.setValue(QStringLiteral("Common/LogTelegramPrefix"), QStringLiteral("PrtCnv_ex_%1").arg(m_exerciseId)); s.setValue(QStringLiteral("Common/LogTelegramPrefix"), QStringLiteral("PrtCnv_ex_%1").arg(m_exerciseId));
s.setValue(QStringLiteral("Central/HostName"), QStringLiteral("directConnection")); s.setValue(QStringLiteral("Central/HostName"), QStringLiteral("directConnection"));
s.setValue(QStringLiteral("Radio/HostName"), QString::fromStdString(radioGrp.radioHostname())); // RadioGroup API simplified - radio configuration members removed
s.setValue(QStringLiteral("Radio/Port"), radioGrp.radioPort());
s.setValue(QStringLiteral("Radio/HostName1"), QString::fromStdString(radioGrp.radioBackupHostname()));
s.setValue(QStringLiteral("Radio/Port1"), radioGrp.radioBackupPort());
s.setValue(QStringLiteral("Radio/HostISSI"), radioGrp.issi());
s.setValue(QStringLiteral("Radio/BroadcastISSI"), radioGrp.group_issi1());
s.setValue(QStringLiteral("Radio/ListenGroups"), radioGrp.group_issi2());
s.setValue(QStringLiteral("Radio/UseScrambling"), m_pdp->useTetraScrambling() ? 1 : 0); s.setValue(QStringLiteral("Radio/UseScrambling"), m_pdp->useTetraScrambling() ? 1 : 0);
s.setValue(QStringLiteral("Injection/Port"), m_socketDispatcher->randomListenPort()); s.setValue(QStringLiteral("Injection/Port"), m_socketDispatcher->randomListenPort());
NOTICE_LOG(m_logger) << "TetraJson Injection/Port = " << s.value(QStringLiteral("Injection/Port")).toInt(); NOTICE_LOG(m_logger) << "TetraJson Injection/Port = " << s.value(QStringLiteral("Injection/Port")).toInt();
@@ -4,11 +4,19 @@
# $Author$ # $Author$
# #
ADD_SUBDIRECTORY(Console) ADD_SUBDIRECTORY(Console)
# Create a separate library for logger functionality that can be linked by other targets
NGL_ADD_LIBRARY(LogViewLogger AAR SV STATIC
logger.cpp
logger.h
)
NGL_TARGET_LINK_LIBRARIES(LogViewLogger
NGLLogger
)
SET(my_SRCS SET(my_SRCS
IntegerCalculator.cpp IntegerCalculator.cpp
IntegerCalculator.hpp IntegerCalculator.hpp
logger.cpp
logger.h
LogViewBooleanEdit.cpp LogViewBooleanEdit.cpp
LogViewBooleanEdit.hpp LogViewBooleanEdit.hpp
LogViewDateTimeEdit.cpp LogViewDateTimeEdit.cpp
@@ -79,6 +87,7 @@ if(QT6_GUI_AVAILABLE)
NGLLogger NGLLogger
nglapplication nglapplication
ngltools ngltools
LogViewLogger
) )
endif() endif()
NGL_INSTALL_TARGET(LogView) NGL_INSTALL_TARGET(LogView)
@@ -1,5 +1,6 @@
#include <nglapplication/nglapplication.h> #include <nglapplication/nglapplication.h>
#include <QtGui/QScreen> #include <QtGui/QScreen>
#include <QtGui/QWindow>
#include <QtCore/QSettings> #include <QtCore/QSettings>
#include <QNetworkProxy> #include <QNetworkProxy>
#ifndef WIN32 #ifndef WIN32
@@ -48,7 +49,10 @@ int main(int argc, char *argv[])
settings.endGroup(); settings.endGroup();
QScreen *screen = QGuiApplication::screens().value(screenNbr, QGuiApplication::primaryScreen()); QScreen *screen = QGuiApplication::screens().value(screenNbr, QGuiApplication::primaryScreen());
N_LogView::LogViewGui* logViewGui = new N_LogView::LogViewGui(screen); N_LogView::LogViewGui* logViewGui = new N_LogView::LogViewGui(nullptr);
if (logViewGui->windowHandle()) {
logViewGui->windowHandle()->setScreen(screen);
}
logViewGui->show(); logViewGui->show();
int ret = app.exec(); int ret = app.exec();
@@ -25,11 +25,12 @@ namespace N_LogView
{ {
LogViewTabWidget::LogViewTabWidget(LogViewField* a_field, LogViewTelegramDialog* a_parent, LogViewSpinBox* a_spinBox) LogViewTabWidget::LogViewTabWidget(LogViewField* a_field, LogViewTelegramDialog* a_parent, LogViewSpinBox* a_spinBox, NGL::INGLLogger& logger)
: QTabWidget(a_parent) : QTabWidget(a_parent)
, LogViewWidget(a_field, this, a_parent, false) , LogViewWidget(a_field, this, a_parent, false)
, m_TelegramDialog(a_parent) , m_TelegramDialog(a_parent)
, m_SpinBox(a_spinBox) , m_SpinBox(a_spinBox)
, m_logger(logger)
{ {
setVisible(false); setVisible(false);
} }
@@ -15,6 +15,7 @@
#include <QtWidgets/QTabWidget> #include <QtWidgets/QTabWidget>
#include "LogViewWidget.hpp" #include "LogViewWidget.hpp"
#include "logger.h"
namespace N_LogView namespace N_LogView
@@ -29,7 +30,7 @@ namespace N_LogView
Q_OBJECT Q_OBJECT
public: public:
LogViewTabWidget(LogViewField* a_field, LogViewTelegramDialog* a_parent, LogViewSpinBox* a_spinBox); LogViewTabWidget(LogViewField* a_field, LogViewTelegramDialog* a_parent, LogViewSpinBox* a_spinBox, NGL::INGLLogger& logger);
bool saveContent(LogViewTelegram* a_telegram) override; bool saveContent(LogViewTelegram* a_telegram) override;
void addTab(LogViewField* a_field, const bool a_isEmpty, int arrayIdx); void addTab(LogViewField* a_field, const bool a_isEmpty, int arrayIdx);
@@ -43,6 +44,7 @@ namespace N_LogView
LogViewTelegramDialog* m_TelegramDialog; LogViewTelegramDialog* m_TelegramDialog;
LogViewSpinBox* m_SpinBox; LogViewSpinBox* m_SpinBox;
NGL::INGLLogger& m_logger;
}; };
@@ -24,11 +24,12 @@ namespace N_LogView
{ {
LogViewTableWidget::LogViewTableWidget(LogViewField* a_field, QWidget* a_parent, const bool a_readonly) LogViewTableWidget::LogViewTableWidget(LogViewField* a_field, QWidget* a_parent, const bool a_readonly, NGL::INGLLogger& logger)
: QTableWidget(0, 2, a_parent) : QTableWidget(0, 2, a_parent)
, LogViewWidget(a_field, this, a_parent, a_readonly) , LogViewWidget(a_field, this, a_parent, a_readonly)
, m_IsFloat(false) , m_IsFloat(false)
, m_IsEnum(false) , m_IsEnum(false)
, m_logger(logger)
{ {
switch (m_Field->xdrElement()->getKind()) switch (m_Field->xdrElement()->getKind())
{ {
@@ -15,6 +15,7 @@
#include <QTableWidget> #include <QTableWidget>
#include "LogViewWidget.hpp" #include "LogViewWidget.hpp"
#include "logger.h"
namespace N_LogView namespace N_LogView
{ {
@@ -24,7 +25,7 @@ namespace N_LogView
{ {
Q_OBJECT Q_OBJECT
public: public:
LogViewTableWidget(LogViewField* a_field, QWidget* a_parent, const bool a_readonly); LogViewTableWidget(LogViewField* a_field, QWidget* a_parent, const bool a_readonly, NGL::INGLLogger& logger);
@@ -42,5 +43,6 @@ namespace N_LogView
private: private:
bool m_IsFloat; bool m_IsFloat;
bool m_IsEnum; bool m_IsEnum;
NGL::INGLLogger& m_logger;
}; };
} }
@@ -102,7 +102,7 @@ LogViewTelegram::LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnv
, m_LogTime(0) , m_LogTime(0)
, m_GpsTime(0) , m_GpsTime(0)
, m_TetraTelegram(nullptr) , m_TetraTelegram(nullptr)
, m_logger(N_LogView::getLogger()) , m_logger(N_LogView::getLogger("LogViewTelegram"))
{ {
const uint32_t &waitTime = qgetenv("LogViewWaitTime").toUInt(); const uint32_t &waitTime = qgetenv("LogViewWaitTime").toUInt();
if (waitTime > 0) if (waitTime > 0)
@@ -146,7 +146,7 @@ LogViewTelegram::LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnv
, m_GpsTime(0) , m_GpsTime(0)
, m_data(a_telegramData) , m_data(a_telegramData)
, m_TetraTelegram(nullptr) , m_TetraTelegram(nullptr)
, m_logger(N_LogView::getLogger()) , m_logger(N_LogView::getLogger("LogViewTelegram"))
{ {
const uint32_t &waitTime = qgetenv("LogViewWaitTime").toUInt(); const uint32_t &waitTime = qgetenv("LogViewWaitTime").toUInt();
if (waitTime > 0) if (waitTime > 0)
@@ -1526,7 +1526,7 @@ void LogViewTelegram::updateJsonValue(const QStringList &path, const QJsonValue
if (!key.startsWith(indexMarker)) if (!key.startsWith(indexMarker))
return; return;
const int arrayIdx = key.midRef(indexMarker.size()).toInt(); const int arrayIdx = key.mid(indexMarker.size()).toInt();
while (arr.size() <= arrayIdx) while (arr.size() <= arrayIdx)
arr.append(QJsonValue()); arr.append(QJsonValue());
@@ -262,6 +262,7 @@ namespace N_LogView
QJsonObject m_json; QJsonObject m_json;
N_CoPrtCnv::CoPrtCnvRadioTelegram *m_TetraTelegram; N_CoPrtCnv::CoPrtCnvRadioTelegram *m_TetraTelegram;
NGL::INGLLogger& m_logger;
LogViewField *getFieldTree(const QString& a_type, const QString& a_name, LogViewField *getFieldTree(const QString& a_type, const QString& a_name,
uint16_t a_arraySize, const LogViewXdrType* a_parentElement = nullptr, uint16_t a_arraySize, const LogViewXdrType* a_parentElement = nullptr,
@@ -35,7 +35,7 @@ class LogViewTelegramDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit LogViewTelegramDialog(QWidget *a_parent = nullptr, const bool a_readonly = true, NGL::INGLLogger& logger = N_LogView::getLogger()); explicit LogViewTelegramDialog(QWidget *a_parent = nullptr, const bool a_readonly = true, NGL::INGLLogger& logger = N_LogView::getLogger("LogViewTelegramDialog"));
void showDialog(const QSharedPointer<LogViewTelegram> &a_telegram); void showDialog(const QSharedPointer<LogViewTelegram> &a_telegram);
void showDataDump(const QSharedPointer<LogViewTelegram> &a_telegram, bool showErrorMessage); void showDataDump(const QSharedPointer<LogViewTelegram> &a_telegram, bool showErrorMessage);
@@ -88,7 +88,11 @@ bool LogViewTetraTelegramsParser::parse(const QString &filename)
const QString content = QString::fromUtf8(f.readAll()); const QString content = QString::fromUtf8(f.readAll());
f.close(); f.close();
const QVector<QStringView> lines = content.splitView(QLatin1Char('\n')); const QStringList linesList = content.split(QLatin1Char('\n'));
QVector<QStringView> lines;
lines.reserve(linesList.size());
for (const QString &line : linesList)
lines += line;
QVector<QStringView> linesTrimmed; QVector<QStringView> linesTrimmed;
linesTrimmed.reserve(lines.size()); linesTrimmed.reserve(lines.size());
for (const QStringView &line : lines) for (const QStringView &line : lines)
@@ -213,7 +217,12 @@ int LogViewTetraTelegramsParser::parseStruct(const QVector<QStringView> &lines,
QString structStr = QLatin1String("struct ") + si.type + QLatin1String("::") + tokens.at(0).toString() + QLatin1Char('\n') + hint.toString(); QString structStr = QLatin1String("struct ") + si.type + QLatin1String("::") + tokens.at(0).toString() + QLatin1Char('\n') + hint.toString();
structStr.replace(QLatin1Char(';'), QLatin1String(";\n")); structStr.replace(QLatin1Char(';'), QLatin1String(";\n"));
DEBUG_LOG(m_logger) << "structStr: " << structStr; DEBUG_LOG(m_logger) << "structStr: " << structStr;
parseStruct(structStr.splitView(QLatin1Char('\n')), 0); const QStringList structLines = structStr.split(QLatin1Char('\n'));
QVector<QStringView> structLinesView;
structLinesView.reserve(structLines.size());
for (const QString &line : structLines)
structLinesView += line;
parseStruct(structLinesView, 0);
mi.type = si.type + QLatin1String("::") + tokens.at(0).toString(); mi.type = si.type + QLatin1String("::") + tokens.at(0).toString();
mi.isArray = true; mi.isArray = true;
@@ -382,7 +391,7 @@ int LogViewTetraTelegramsParser::parseConstraint(const QVector<QStringView> &lin
++i; ++i;
continue; continue;
} }
const QVector<QStringView> parts = tokens.at(6).split(QLatin1String("::")); const QVector<QStringView> parts = tokens.at(6).split(u"::");
if (parts.size() != 2) if (parts.size() != 2)
{ {
WARNING_LOG(m_logger) << "Could not parse constraint: '" << lines.at(i).toString() << "'"; WARNING_LOG(m_logger) << "Could not parse constraint: '" << lines.at(i).toString() << "'";
@@ -451,6 +460,17 @@ static inline void bracketCount(const QStringView &str, int &cntLt, int &cntGt)
QVector<QStringView> LogViewTetraTelegramsParser::tokenize(const QStringView &line) const QVector<QStringView> LogViewTetraTelegramsParser::tokenize(const QStringView &line) const
{ {
QVector<QStringView> ret = line.split(QLatin1Char(' '), Qt::SkipEmptyParts); QVector<QStringView> ret = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
// Calculate positions for each token (Qt6 QStringView has no position() method)
QVector<int> positions(ret.size());
int currentPos = 0;
for (int j = 0; j < ret.size(); ++j)
{
// Find position of this token in the original line
positions[j] = line.indexOf(ret[j], currentPos);
currentPos = positions[j] + ret[j].size();
}
int i = 0; int i = 0;
while (i < ret.size()) while (i < ret.size())
{ {
@@ -461,7 +481,7 @@ QVector<QStringView> LogViewTetraTelegramsParser::tokenize(const QStringView &li
if (i == ret.size() - 1) if (i == ret.size() - 1)
break; break;
const QStringView &lastToken = ret.last(); const QStringView &lastToken = ret.last();
const QStringView newToken = line.mid(token.position(), lastToken.position() - token.position() + lastToken.size()); const QStringView newToken = line.mid(positions[i], positions.last() - positions[i] + lastToken.size());
DEBUG_LOG(m_logger) << "New Token: " << newToken.toString(); DEBUG_LOG(m_logger) << "New Token: " << newToken.toString();
ret.resize(i + 1); ret.resize(i + 1);
ret[i] = newToken; ret[i] = newToken;
@@ -478,7 +498,7 @@ QVector<QStringView> LogViewTetraTelegramsParser::tokenize(const QStringView &li
continue; continue;
} }
const QStringView &nextToken = ret.at(i + 1); const QStringView &nextToken = ret.at(i + 1);
const QStringView newToken = line.mid(token.position(), nextToken.position() - token.position() + nextToken.size()); const QStringView newToken = line.mid(positions[i], positions[i + 1] - positions[i] + nextToken.size());
DEBUG_LOG(m_logger) << "New Token: " << newToken.toString(); DEBUG_LOG(m_logger) << "New Token: " << newToken.toString();
ret.removeAt(i + 1); ret.removeAt(i + 1);
ret[i] = newToken; ret[i] = newToken;
@@ -77,7 +77,7 @@ private:
int parseEnum(const QVector<QStringView> &lines, int iStartPos, const QString &ns, StructInformation *si = nullptr); int parseEnum(const QVector<QStringView> &lines, int iStartPos, const QString &ns, StructInformation *si = nullptr);
int parseConstraint(const QVector<QStringView> &lines, int iStartPos); int parseConstraint(const QVector<QStringView> &lines, int iStartPos);
void categorizeMember(MemberInformation &mi) const; void categorizeMember(MemberInformation &mi) const;
QVector<QStringView> tokenize(QStringView line) const; QVector<QStringView> tokenize(const QStringView &line) const;
static bool validStructTokens(const QVector<QStringView> &tokens); static bool validStructTokens(const QVector<QStringView> &tokens);
private: private:
EnumInformation m_telegramIdEnum; EnumInformation m_telegramIdEnum;
@@ -30,6 +30,7 @@ LogViewWidget::LogViewWidget(LogViewField* a_field, QWidget* a_widget, QWidget*
, m_Widget(a_widget) , m_Widget(a_widget)
, m_Field(a_field) , m_Field(a_field)
, m_Parent(a_parent) , m_Parent(a_parent)
, m_logger(getLogger("LogViewWidget"))
{ {
} }
@@ -15,6 +15,7 @@
#include <QtWidgets/QWidget> #include <QtWidgets/QWidget>
#include "logger.h" #include "logger.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
class QWidget; class QWidget;
class QFont; class QFont;
@@ -77,6 +78,8 @@ protected:
LogViewField *m_Field; LogViewField *m_Field;
QWidget *m_Parent; QWidget *m_Parent;
LOGGER_T m_logger;
}; };
} }
@@ -53,6 +53,7 @@ namespace N_LogView
protected: protected:
QString m_Name; QString m_Name;
E_ElementKind m_Kind; E_ElementKind m_Kind;
LOGGER_T m_logger;
QString getKindName() const; QString getKindName() const;
}; };
@@ -37,6 +37,7 @@ LogViewXdrParser::LogViewXdrParser()
, m_WordListIndex(0) , m_WordListIndex(0)
, m_ActElement(nullptr) , m_ActElement(nullptr)
, m_State(e_ParseMain) , m_State(e_ParseMain)
, m_logger(getLogger("LogViewXdrParser"))
{} {}
LogViewXdrParser::~LogViewXdrParser() LogViewXdrParser::~LogViewXdrParser()
@@ -352,7 +353,7 @@ void LogViewXdrParser::parseEnum(const QString &a_line, const uint16_t a_enumSiz
if (a_line.endsWith(QLatin1String(" {"))) if (a_line.endsWith(QLatin1String(" {")))
{ {
m_State = e_ParseEnum; m_State = e_ParseEnum;
const QString name = a_line.leftRef(a_line.length()-2).trimmed().toString(); const QString name = a_line.left(a_line.length()-2).trimmed();
m_ActElement = new LogViewXdrStruct(name, LogViewXdrElement::e_KindEnum, a_enumSize); m_ActElement = new LogViewXdrStruct(name, LogViewXdrElement::e_KindEnum, a_enumSize);
if (!addToElementMap(name, m_ActElement)) if (!addToElementMap(name, m_ActElement))
{ {
@@ -617,8 +618,8 @@ bool LogViewXdrParser::parseEnumLine(const QString& a_line, QString& a_name, QSt
int sepPos = line.lastIndexOf(QLatin1Char('=')); int sepPos = line.lastIndexOf(QLatin1Char('='));
if (-1 != sepPos) if (-1 != sepPos)
{ {
a_name = line.leftRef(sepPos).trimmed().toString(); a_name = line.left(sepPos).trimmed();
a_value = line.midRef(sepPos+1).trimmed().toString(); a_value = line.mid(sepPos+1).trimmed();
return true; return true;
} }
else else
@@ -870,7 +871,7 @@ void LogViewXdrParser::fillWordList(const QString& a_line)
line.replace(QLatin1Char('}'), QLatin1String(" } ")); line.replace(QLatin1Char('}'), QLatin1String(" } "));
line.replace(QLatin1Char(':'), QLatin1String(" : ")); line.replace(QLatin1Char(':'), QLatin1String(" : "));
line.replace(QLatin1Char(';'), QLatin1String(" ; ")); line.replace(QLatin1Char(';'), QLatin1String(" ; "));
m_WordList = line.split(QLatin1Char(' '), QString::SkipEmptyParts); m_WordList = line.split(QLatin1Char(' '), Qt::SkipEmptyParts);
m_WordListIndex = 0; m_WordListIndex = 0;
@@ -19,6 +19,7 @@
#include "IntegerCalculator.hpp" #include "IntegerCalculator.hpp"
#include "logger.h" #include "logger.h"
#include "LogViewXdrStandardType.hpp" #include "LogViewXdrStandardType.hpp"
#include "NGLLoggerBootstrap.h"
namespace N_LogView namespace N_LogView
{ {
@@ -174,6 +175,7 @@ namespace N_LogView
bool addToElementMap(const QString& a_name, LogViewXdrElement* a_element); bool addToElementMap(const QString& a_name, LogViewXdrElement* a_element);
private: private:
LOGGER_T m_logger;
}; };
} }
@@ -1014,7 +1014,7 @@ fi
CMAKE_BUILD_FLAGS="${CMAKE_BUILD_FLAGS:-}" CMAKE_BUILD_FLAGS="${CMAKE_BUILD_FLAGS:-}"
# Export variables for Docker container # Export variables for Docker container
export BUILD_ALL BUILD_RTI BUILD_GRANTLEE BUILD_ARCGIS BUILD_CODIFICATION BUILD_GROUP1 BUILD_GROUP2 BUILD_GROUP3 BUILD_GROUP4 BUILD_GROUP5 BUILD_GROUP6 BUILD_GROUP7 BUILD_GROUP8 BUILD_GROUP9 BUILD_GROUP10 BUILD_GROUP11 BUILD_VIEWER_ONLY RUN_CTEST TESTS_ONLY INTEGRATION_TEST VERIFY_RPM USE_PREBUILT_IMAGE BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE CMAKE_BUILD_FLAGS RELEASE_BUILD export BUILD_ALL BUILD_RTI BUILD_GRANTLEE BUILD_ARCGIS BUILD_CODIFICATION BUILD_GROUP1 BUILD_GROUP2 BUILD_GROUP3 BUILD_GROUP4 BUILD_GROUP5 BUILD_GROUP6 BUILD_GROUP7 BUILD_GROUP8 BUILD_GROUP9 BUILD_GROUP10 BUILD_GROUP11 BUILD_VIEWER_ONLY RUN_CTEST TESTS_ONLY INTEGRATION_TEST VERIFY_RPM USE_PREBUILT_IMAGE BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE CMAKE_BUILD_FLAGS RELEASE_BUILD RUN_JENKINS_BUILDER PACKAGE_OUTPUT_DIR LTS_VERSION PROJECT GUEZ_MODE BUILD_NUMBER BUILD_TAG
# Group 5: Viewer module targets (conditional on BUILD_ARCGIS) # Group 5: Viewer module targets (conditional on BUILD_ARCGIS)
# Note: LtsFileDialog excluded from viewer-only builds due to Group 4 dependencies (svcExmCommon, svcOpmCommon, svcFlmCommon) # Note: LtsFileDialog excluded from viewer-only builds due to Group 4 dependencies (svcExmCommon, svcOpmCommon, svcFlmCommon)
@@ -1323,6 +1323,7 @@ BUILD_TAG="${BUILD_TAG:-manual-build}"
BUILD_CODIFICATION="${BUILD_CODIFICATION:-OFF}" BUILD_CODIFICATION="${BUILD_CODIFICATION:-OFF}"
VERIFY_RPM="${VERIFY_RPM:-OFF}" VERIFY_RPM="${VERIFY_RPM:-OFF}"
CMAKE_BUILD_FLAGS="${CMAKE_BUILD_FLAGS:-}" CMAKE_BUILD_FLAGS="${CMAKE_BUILD_FLAGS:-}"
echo "CONTAINER DEBUG: RUN_JENKINS_BUILDER=${RUN_JENKINS_BUILDER}"
# RELEASE_BUILD already set above at line 745 - don't overwrite # RELEASE_BUILD already set above at line 745 - don't overwrite
QT_VERSION="${QT_VERSION:-6.10.2}" QT_VERSION="${QT_VERSION:-6.10.2}"
QT_ARCH="${QT_ARCH:-linux_gcc_64}" QT_ARCH="${QT_ARCH:-linux_gcc_64}"
@@ -1607,6 +1608,8 @@ EOF
chmod +x "${CONTAINER_SCRIPT_HOST}" chmod +x "${CONTAINER_SCRIPT_HOST}"
log_info "DEBUG: RUN_JENKINS_BUILDER=${RUN_JENKINS_BUILDER} before docker run"
docker run --rm \ docker run --rm \
-e MIGRATE_PIPELINE_ROOT \ -e MIGRATE_PIPELINE_ROOT \
-e LANG \ -e LANG \