Binary Resource File for the ozw config database

This commit is contained in:
Justin Hammond 2020-01-04 01:32:10 +08:00
parent dc22344089
commit 8eb82faeef
5 changed files with 54 additions and 15 deletions

View file

@ -35,6 +35,7 @@ COPY --from=builder /usr/local/lib/libqt* /usr/local/lib/
COPY --from=builder /usr/local/lib*/libopenzwave* /usr/local/lib/
COPY --from=builder /usr/lib/*/libQt5Mqtt* /usr/local/lib/
COPY --from=builder /opt/qt-openzwave/tools/* /usr/local/bin/
COPY --from=builder /usr/share/OpenZWave/qt-openzwavedatabase.rcc /usr/share/OpenZWave/
RUN mkdir -p /opt/ozw/config/crashes/
ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH"
ENV USBPATH="/dev/ttyUSB0"

View file

@ -2,6 +2,7 @@
#define QTOPENZWAVEDATABASE_H
#include <QDir>
bool initConfigDatabase(QStringList paths);
bool copyConfigDatabase(QDir configpath);
#endif // QTOPENZWAVEDATABASE_H

View file

@ -8,15 +8,16 @@ CONFIG += silent file_copies resources_big
!versionAtLeast(QT_VERSION, 5.11.2):error("Use at least Qt version 5.11.2")
ozwconfig.target=config/qrc_ozwconfig.cpp
ozwconfig.commands=cp -R ../../open-zwave/config config/ && cd config && $$[QT_INSTALL_BINS]/rcc -project -o ozwconfig.qrc && $$[QT_INSTALL_BINS]/rcc --name="ozwconfig" --root="/config/" ozwconfig.qrc -o qrc_ozwconfig.cpp
ozwconfig.target=qt-openzwavedatabase.rcc
ozwconfig.commands=cp -R ../../open-zwave/config config/ && cd config && $$[QT_INSTALL_BINS]/rcc -project -o ozwconfig.qrc && $$[QT_INSTALL_BINS]/rcc --name="ozwconfig" --root="/config/" ozwconfig.qrc --binary -o ../qt-openzwavedatabase.rcc
ozwconfigdb.path = $$[QT_INSTALL_PREFIX]/share/OpenZWave/
ozwconfigdb.files=qt-openzwavedatabase.rcc
!win32 {
QMAKE_EXTRA_TARGETS += ozwconfig
PRE_TARGETDEPS += config/qrc_ozwconfig.cpp
SOURCES += config/qrc_ozwconfig.cpp \
source/qt-openzwavedatabase.cpp
PRE_TARGETDEPS += qt-openzwavedatabase.rcc
SOURCES += source/qt-openzwavedatabase.cpp
INSTALLS += ozwconfigdb
macx {
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
}

View file

@ -1,7 +1,43 @@
#include <QDirIterator>
#include <QDebug>
#include <QResource>
#include <QStandardPaths>
#include "qt-openzwave/qt-openzwavedatabase.h"
bool initConfigDatabase(QStringList path) {
for (int i = 0; i < path.size(); ++i) {
QString test = path.at(i);
test.append("/qt-openzwavedatabase.rcc");
qDebug() << "Testing " << test;
if (QResource::registerResource(test)) {
qInfo() << "Found qt-openzwavedatabase.rcc at " << test;
return true;
}
}
if (QResource::registerResource("qt-openzwavedatabase/qt-openzwavedatabase.rcc")) {
qInfo() << "Found qt-openzwavedatabase.rcc at qt-openzwavedatabase/qt-openzwavedatabase.rcc";
return true;
}
if (QResource::registerResource("./qt-openzwavedatabase.rcc")) {
qInfo() << "Found qt-openzwavedatabase.rcc at ./qt-openzwavedatabase.rcc";
return true;
}
for (int i = 0; i < QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).size(); ++i) {
QString test = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).at(i);
test.append("/OpenZWave/qt-openzwavedatabase.rcc");
qDebug() << "Testing Standard Paths" << test;
if (QResource::registerResource(test)) {
qInfo() << "Found qt-openzwavedatabase.rcc at " << test;
return true;
}
}
return true;
}
bool copyConfigDatabase(QDir configpath)
{
QDirIterator it(":/config/", QStringList() << "*.xml" << "*.png" << "*.xsd", QDir::NoFilter, QDirIterator::Subdirectories);

View file

@ -219,7 +219,6 @@ int main(int argc, char *argv[])
PossibleDBPaths << parser.value(userDir);
PossibleDBPaths << "./config/";
PossibleDBPaths << QDir::toNativeSeparators("../../../config/");
// PossibleDBPaths << settings.value("openzwave/UserPath", QDir::toNativeSeparators("../../../config/")).toString().append("/");
PossibleDBPaths << QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
foreach(path, PossibleDBPaths) {
@ -235,20 +234,21 @@ int main(int argc, char *argv[])
}
}
// if (userPath.isEmpty()) {
// fputs(qPrintable("userPath is Not Set or Missing\n"), stderr);
// exit(-1);
// }
if (dbPath.isEmpty()) {
copyConfigDatabase(QFileInfo("./").absoluteFilePath().append("/"));
dbPath = "./config/";
userPath = "./config/";
if (initConfigDatabase(PossibleDBPaths)) {
copyConfigDatabase(QFileInfo("./").absoluteFilePath().append("/"));
dbPath = "./config/";
userPath = "./config/";
} else {
qWarning() << "Cant find qt-openzwavedatabase.rcc";
}
}
qDebug() << "DBPath: " << dbPath;
qDebug() << "userPath: " << userPath;
QSettings settings(userPath.append("/ozwdaemon.ini"), QSettings::IniFormat);
exit(-1);
#ifdef HAVE_MQTT
if (parser.isSet(MQTTServer)) {