Unable to build container with provided Dockerfile
Hi, sorry for bothering you again after all those years with a container build issue. I saw that p44mbrd is available and was wondering if that enables me, to hook up my digitalstrom installation to home assistant.
I therefore tried to build the container image with the current Dockerfile which fails with the following error:
Bionic Beaver:
src/p44utils/thirdparty/sqlite3pp/sqlite3pp.cpp: In destructor 'virtual sqlite3pp::statement::~statement()':
src/p44utils/thirdparty/sqlite3pp/sqlite3pp.cpp:198:31: warning: throw will always call terminate() [-Wterminate]
throw database_error(db_);
^
src/p44utils/thirdparty/sqlite3pp/sqlite3pp.cpp:198:31: note: in C++11 destructors default to noexcept
src/p44utils/thirdparty/sqlite3pp/sqlite3pp.cpp: In destructor 'virtual sqlite3pp::transaction::~transaction()':
src/p44utils/thirdparty/sqlite3pp/sqlite3pp.cpp:499:27: warning: throw will always call terminate() [-Wterminate]
throw database_error(*db_);
^
src/p44utils/thirdparty/sqlite3pp/sqlite3pp.cpp:499:27: note: in C++11 destructors default to noexcept
mv -f src/p44utils/thirdparty/sqlite3pp/.deps/vdcd-sqlite3pp.Tpo src/p44utils/thirdparty/sqlite3pp/.deps/vdcd-sqlite3pp.Po
g++ -DHAVE_CONFIG_H -I. -I ./src -I ./src/p44utils -I ./src/p44lrgraphics -I ./src/p44utils/thirdparty/civetweb -I ./src/p44utils/thirdparty/slre -idirafter ./src/p44utils/thirdparty -I ./src/p44vdc/pbuf/gen -I ./src/p44vdc/vdc_common -I ./src/p44vdc/behaviours -I ./src/p44vdc/deviceclasses/simpleio -I ./src/p44vdc/deviceclasses/bridge -I ./src/p44vdc/deviceclasses/proxy -I ./src/p44vdc/deviceclasses/custom -I ./src/p44vdc/deviceclasses/evaluator -I ./src/p44vdc/deviceclasses/enocean -I ./src/p44vdc/deviceclasses/dmx -I ./src/p44vdc/deviceclasses/eldat -I ./src/p44vdc/deviceclasses/zf -I ./src/p44vdc/deviceclasses/dali -I ./src/p44vdc/deviceclasses/hue -I ./src/p44vdc/deviceclasses/ledchain -D ENABLE_RRDB=0 -D ENABLE_P44FEATURES=0 -D ENABLE_RPIWS281X=0 -D ENABLE_OLA=0 -D ENABLE_PNG=0 -D ENABLE_UBUS=0 -D DISABLE_I2C=1 -D ENABLE_MODBUS=0 -D ENABLE_UWSC=0 -pthread -I/usr/include/json-c -D_REENTRANT -D NO_SSL_DL=1 -D BOOST_BIND_GLOBAL_PLACEHOLDERS=1 -D DISABLE_I2C=1 -g -O2 -MT src/p44utils/thirdparty/sqlite3pp/vdcd-sqlite3ppext.o -MD -MP -MF src/p44utils/thirdparty/sqlite3pp/.deps/vdcd-sqlite3ppext.Tpo -c -o src/p44utils/thirdparty/sqlite3pp/vdcd-sqlite3ppext.o `test -f 'src/p44utils/thirdparty/sqlite3pp/sqlite3ppext.cpp' || echo './'`src/p44utils/thirdparty/sqlite3pp/sqlite3ppext.cpp
mv -f src/p44utils/thirdparty/sqlite3pp/.deps/vdcd-sqlite3ppext.Tpo src/p44utils/thirdparty/sqlite3pp/.deps/vdcd-sqlite3ppext.Po
g++ -DHAVE_CONFIG_H -I. -I ./src -I ./src/p44utils -I ./src/p44lrgraphics -I ./src/p44utils/thirdparty/civetweb -I ./src/p44utils/thirdparty/slre -idirafter ./src/p44utils/thirdparty -I ./src/p44vdc/pbuf/gen -I ./src/p44vdc/vdc_common -I ./src/p44vdc/behaviours -I ./src/p44vdc/deviceclasses/simpleio -I ./src/p44vdc/deviceclasses/bridge -I ./src/p44vdc/deviceclasses/proxy -I ./src/p44vdc/deviceclasses/custom -I ./src/p44vdc/deviceclasses/evaluator -I ./src/p44vdc/deviceclasses/enocean -I ./src/p44vdc/deviceclasses/dmx -I ./src/p44vdc/deviceclasses/eldat -I ./src/p44vdc/deviceclasses/zf -I ./src/p44vdc/deviceclasses/dali -I ./src/p44vdc/deviceclasses/hue -I ./src/p44vdc/deviceclasses/ledchain -D ENABLE_RRDB=0 -D ENABLE_P44FEATURES=0 -D ENABLE_RPIWS281X=0 -D ENABLE_OLA=0 -D ENABLE_PNG=0 -D ENABLE_UBUS=0 -D DISABLE_I2C=1 -D ENABLE_MODBUS=0 -D ENABLE_UWSC=0 -pthread -I/usr/include/json-c -D_REENTRANT -D NO_SSL_DL=1 -D BOOST_BIND_GLOBAL_PLACEHOLDERS=1 -D DISABLE_I2C=1 -g -O2 -MT src/p44lrgraphics/vdcd-blocksview.o -MD -MP -MF src/p44lrgraphics/.deps/vdcd-blocksview.Tpo -c -o src/p44lrgraphics/vdcd-blocksview.o `test -f 'src/p44lrgraphics/blocksview.cpp' || echo './'`src/p44lrgraphics/blocksview.cpp
src/p44lrgraphics/blocksview.cpp:661:1: sorry, unimplemented: non-trivial designated initializers not supported
};
^
src/p44lrgraphics/blocksview.cpp:661:1: sorry, unimplemented: non-trivial designated initializers not supported
Makefile:3509: recipe for target 'src/p44lrgraphics/vdcd-blocksview.o' failed
make[1]: Leaving directory '/vdcd'
make[1]: *** [src/p44lrgraphics/vdcd-blocksview.o] Error 1
Makefile:1372: recipe for target 'all' failed
make: *** [all] Error 2
Error: building at STEP "RUN cd ${DSROOR}/vdcd && autoreconf -i && ./configure && make clean && make all": while running runtime: exit status 2
As this is a rather old version I also tried to use newer versions of ubuntu:
Focal Fossa:
mv -f src/p44vdc/vdc_common/.deps/vdcd-dsbehaviour.Tpo src/p44vdc/vdc_common/.deps/vdcd-dsbehaviour.Po
g++ -DHAVE_CONFIG_H -I. -I ./src -I ./src/p44utils -I ./src/p44lrgraphics -I ./src/p44utils/thirdparty/civetweb -I ./src/p44utils/thirdparty/slre -idirafter ./src/p44utils/thirdparty -I ./src/p44vdc/pbuf/gen -I ./src/p44vdc/vdc_common -I ./src/p44vdc/behaviours -I ./src/p44vdc/deviceclasses/simpleio -I ./src/p44vdc/deviceclasses/bridge -I ./src/p44vdc/deviceclasses/proxy -I ./src/p44vdc/deviceclasses/custom -I ./src/p44vdc/deviceclasses/evaluator -I ./src/p44vdc/deviceclasses/enocean -I ./src/p44vdc/deviceclasses/dmx -I ./src/p44vdc/deviceclasses/eldat -I ./src/p44vdc/deviceclasses/zf -I ./src/p44vdc/deviceclasses/dali -I ./src/p44vdc/deviceclasses/hue -I ./src/p44vdc/deviceclasses/ledchain -D ENABLE_RRDB=0 -D ENABLE_P44FEATURES=0 -D ENABLE_RPIWS281X=0 -D ENABLE_OLA=0 -D ENABLE_PNG=0 -D ENABLE_UBUS=0 -D DISABLE_I2C=1 -D ENABLE_MODBUS=0 -D ENABLE_UWSC=0 -pthread -I/usr/include/json-c -D_REENTRANT -D NO_SSL_DL=1 -D BOOST_BIND_GLOBAL_PLACEHOLDERS=1 -D DISABLE_I2C=1 -g -O2 -MT src/p44vdc/vdc_common/vdcd-outputbehaviour.o -MD -MP -MF src/p44vdc/vdc_common/.deps/vdcd-outputbehaviour.Tpo -c -o src/p44vdc/vdc_common/vdcd-outputbehaviour.o `test -f 'src/p44vdc/vdc_common/outputbehaviour.cpp' || echo './'`src/p44vdc/vdc_common/outputbehaviour.cpp
src/p44vdc/vdc_common/outputbehaviour.cpp: In member function 'p44::MLMicroSeconds p44::OutputBehaviour::outputReportInterval()':
src/p44vdc/vdc_common/outputbehaviour.cpp:308:7: error: 'mBridgePushInterval' was not declared in this scope
308 | if (mBridgePushInterval==Infinite || mBridgePushInterval==Never) return Never; // no regular updates
| ^~~~~~~~~~~~~~~~~~~
src/p44vdc/vdc_common/outputbehaviour.cpp:309:10: error: 'mBridgePushInterval' was not declared in this scope
309 | return mBridgePushInterval; // bridges want regular updates in about this intervals when e.g. a transition is going on
| ^~~~~~~~~~~~~~~~~~~
src/p44vdc/vdc_common/outputbehaviour.cpp: In member function 'virtual bool p44::OutputBehaviour::accessField(p44::PropertyAccessMode, p44::ApiValuePtr, p44::PropertyDescriptorPtr)':
src/p44vdc/vdc_common/outputbehaviour.cpp:830:15: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
830 | if (mBridgePushInterval==Infinite) aPropValue->setNull();
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:831:46: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
831 | aPropValue->setDoubleValue((double)mBridgePushInterval/Second);
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:834:46: error: 'mMinReportInterval' was not declared in this scope; did you mean 'minReportInterval_key'?
834 | aPropValue->setDoubleValue((double)mMinReportInterval/Second);
| ^~~~~~~~~~~~~~~~~~
| minReportInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:857:11: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
857 | mBridgePushInterval = aPropValue->isNull() ? Infinite : aPropValue->doubleValue()*Second;
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:860:11: error: 'mMinReportInterval' was not declared in this scope; did you mean 'minReportInterval_key'?
860 | mMinReportInterval = aPropValue->doubleValue()*Second;
| ^~~~~~~~~~~~~~~~~~
| minReportInterval_key
make[1]: Leaving directory '/vdcd'
make[1]: *** [Makefile:4074: src/p44vdc/vdc_common/vdcd-outputbehaviour.o] Error 1
make: *** [Makefile:1553: all] Error 2
Error: building at STEP "RUN cd ${DSROOR}/vdcd && autoreconf -i && ./configure && make clean && make all": while running runtime: exit status 2
I added the following:
ARG DEBIAN_FRONTEND=noninteractive
Due to an interactive prompt:
Setting up tzdata (2025b-0ubuntu0.20.04.1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc
2. America 5. Arctic 8. Europe 11. SystemV 14. Legacy
3. Antarctica 6. Asia 9. Indian 12. US
Geographic area:
Jammy Jellyfish:
g++ -DHAVE_CONFIG_H -I. -I ./src -I ./src/p44utils -I ./src/p44lrgraphics -I ./src/p44utils/thirdparty/civetweb -I ./src/p44utils/thirdparty/slre -idirafter ./src/p44utils/thirdparty -I ./src/p44vdc/pbuf/gen -I ./src/p44vdc/vdc_common -I ./src/p44vdc/behaviours -I ./src/p44vdc/deviceclasses/simpleio -I ./src/p44vdc/deviceclasses/bridge -I ./src/p44vdc/deviceclasses/proxy -I ./src/p44vdc/deviceclasses/custom -I ./src/p44vdc/deviceclasses/evaluator -I ./src/p44vdc/deviceclasses/enocean -I ./src/p44vdc/deviceclasses/dmx -I ./src/p44vdc/deviceclasses/eldat -I ./src/p44vdc/deviceclasses/zf -I ./src/p44vdc/deviceclasses/dali -I ./src/p44vdc/deviceclasses/hue -I ./src/p44vdc/deviceclasses/ledchain -D ENABLE_RRDB=0 -D ENABLE_P44FEATURES=0 -D ENABLE_RPIWS281X=0 -D ENABLE_OLA=0 -D ENABLE_PNG=0 -D ENABLE_UBUS=0 -D DISABLE_I2C=1 -D ENABLE_MODBUS=0 -D ENABLE_UWSC=0 -I/usr/include/json-c -D_REENTRANT -D NO_SSL_DL=1 -D BOOST_BIND_GLOBAL_PLACEHOLDERS=1 -D DISABLE_I2C=1 -g -O2 -MT src/p44vdc/vdc_common/vdcd-outputbehaviour.o -MD -MP -MF src/p44vdc/vdc_common/.deps/vdcd-outputbehaviour.Tpo -c -o src/p44vdc/vdc_common/vdcd-outputbehaviour.o `test -f 'src/p44vdc/vdc_common/outputbehaviour.cpp' || echo './'`src/p44vdc/vdc_common/outputbehaviour.cpp
src/p44vdc/vdc_common/outputbehaviour.cpp: In member function 'p44::MLMicroSeconds p44::OutputBehaviour::outputReportInterval()':
src/p44vdc/vdc_common/outputbehaviour.cpp:308:7: error: 'mBridgePushInterval' was not declared in this scope
308 | if (mBridgePushInterval==Infinite || mBridgePushInterval==Never) return Never; // no regular updates
| ^~~~~~~~~~~~~~~~~~~
src/p44vdc/vdc_common/outputbehaviour.cpp:309:10: error: 'mBridgePushInterval' was not declared in this scope
309 | return mBridgePushInterval; // bridges want regular updates in about this intervals when e.g. a transition is going on
| ^~~~~~~~~~~~~~~~~~~
src/p44vdc/vdc_common/outputbehaviour.cpp: In member function 'virtual bool p44::OutputBehaviour::accessField(p44::PropertyAccessMode, p44::ApiValuePtr, p44::PropertyDescriptorPtr)':
src/p44vdc/vdc_common/outputbehaviour.cpp:830:15: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
830 | if (mBridgePushInterval==Infinite) aPropValue->setNull();
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:831:46: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
831 | aPropValue->setDoubleValue((double)mBridgePushInterval/Second);
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:834:46: error: 'mMinReportInterval' was not declared in this scope; did you mean 'minReportInterval_key'?
834 | aPropValue->setDoubleValue((double)mMinReportInterval/Second);
| ^~~~~~~~~~~~~~~~~~
| minReportInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:857:11: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
857 | mBridgePushInterval = aPropValue->isNull() ? Infinite : aPropValue->doubleValue()*Second;
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:860:11: error: 'mMinReportInterval' was not declared in this scope; did you mean 'minReportInterval_key'?
860 | mMinReportInterval = aPropValue->doubleValue()*Second;
| ^~~~~~~~~~~~~~~~~~
| minReportInterval_key
make[1]: Leaving directory '/vdcd'
make[1]: *** [Makefile:4074: src/p44vdc/vdc_common/vdcd-outputbehaviour.o] Error 1
make: *** [Makefile:1553: all] Error 2
Error: building at STEP "RUN cd ${DSROOR}/vdcd && autoreconf -i && ./configure && make clean && make all": while running runtime: exit status 2
Noble Numbat:
mv -f src/p44lrgraphics/.deps/vdcd-viewfactory.Tpo src/p44lrgraphics/.deps/vdcd-viewfactory.Po
g++ -DHAVE_CONFIG_H -I. -I ./src -I ./src/p44utils -I ./src/p44lrgraphics -I ./src/p44utils/thirdparty/civetweb -I ./src/p44utils/thirdparty/slre -idirafter ./src/p44utils/thirdparty -I ./src/p44vdc/pbuf/gen -I ./src/p44vdc/vdc_common -I ./src/p44vdc/behaviours -I ./src/p44vdc/deviceclasses/simpleio -I ./src/p44vdc/deviceclasses/bridge -I ./src/p44vdc/deviceclasses/proxy -I ./src/p44vdc/deviceclasses/custom -I ./src/p44vdc/deviceclasses/evaluator -I ./src/p44vdc/deviceclasses/enocean -I ./src/p44vdc/deviceclasses/dmx -I ./src/p44vdc/deviceclasses/eldat -I ./src/p44vdc/deviceclasses/zf -I ./src/p44vdc/deviceclasses/dali -I ./src/p44vdc/deviceclasses/hue -I ./src/p44vdc/deviceclasses/ledchain -D ENABLE_RRDB=0 -D ENABLE_P44FEATURES=0 -D ENABLE_RPIWS281X=0 -D ENABLE_OLA=0 -D ENABLE_PNG=0 -D ENABLE_UBUS=0 -D DISABLE_I2C=1 -D ENABLE_MODBUS=0 -D ENABLE_UWSC=0 -I/usr/include/json-c -D_REENTRANT -D NO_SSL_DL=1 -D BOOST_BIND_GLOBAL_PLACEHOLDERS=1 -D DISABLE_I2C=1 -g -O2 -MT src/p44lrgraphics/vdcd-viewscroller.o -MD -MP -MF src/p44lrgraphics/.deps/vdcd-viewscroller.Tpo -c -o src/p44lrgraphics/vdcd-viewscroller.o `test -f 'src/p44lrgraphics/viewscroller.cpp' || echo './'`src/p44lrgraphics/viewscroller.cpp
src/p44lrgraphics/viewscroller.cpp: In member function 'p44::PixelPoint p44::ViewScroller::remainingPixelsToScroll()':
src/p44lrgraphics/viewscroller.cpp:193:22: error: 'INT_MAX' was not declared in this scope
193 | PixelPoint rem = { INT_MAX, INT_MAX }; // assume forever
| ^~~~~~~
src/p44lrgraphics/viewscroller.cpp:37:1: note: 'INT_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
36 | #include "viewfactory.hpp"
+++ |+#include <climits>
37 | #endif
src/p44lrgraphics/viewscroller.cpp: In member function 'p44::MLMicroSeconds p44::ViewScroller::remainingScrollTime()':
src/p44lrgraphics/viewscroller.cpp:224:14: error: 'INT_MAX' was not declared in this scope
224 | if (rem.x==INT_MAX && rem.y==INT_MAX) return Infinite; // no limit
| ^~~~~~~
src/p44lrgraphics/viewscroller.cpp:224:14: note: 'INT_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
src/p44lrgraphics/viewscroller.cpp:225:15: error: 'INT_MAX' was not declared in this scope
225 | int steps = INT_MAX;
| ^~~~~~~
src/p44lrgraphics/viewscroller.cpp:225:15: note: 'INT_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
src/p44lrgraphics/viewscroller.cpp: In member function 'void p44::ViewScroller::purgeScrolledOut()':
src/p44lrgraphics/viewscroller.cpp:310:16: error: 'INT_MAX' was not declared in this scope
310 | if (rem.x==INT_MAX) rem.x = 0;
| ^~~~~~~
src/p44lrgraphics/viewscroller.cpp:310:16: note: 'INT_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
src/p44lrgraphics/viewscroller.cpp:311:16: error: 'INT_MAX' was not declared in this scope
311 | if (rem.y==INT_MAX) rem.y = 0;
| ^~~~~~~
src/p44lrgraphics/viewscroller.cpp:311:16: note: 'INT_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
src/p44lrgraphics/viewscroller.cpp: In function 'void remainingpixels_func(p44::P44Script::BuiltinFunctionContextPtr)':
src/p44lrgraphics/viewscroller.cpp:492:34: error: 'INT_MAX' was not declared in this scope
492 | r->setMemberByName("x", rem.x==INT_MAX ? new ScriptObj() : new IntegerValue(rem.x));
| ^~~~~~~
src/p44lrgraphics/viewscroller.cpp:492:34: note: 'INT_MAX' is defined in header '<climits>'; did you forget to '#include <climits>'?
make[1]: Leaving directory '/vdcd'
make[1]: *** [Makefile:3864: src/p44lrgraphics/vdcd-viewscroller.o] Error 1
make: *** [Makefile:1553: all] Error 2
Error: building at STEP "RUN cd ${DSROOR}/vdcd && autoreconf -i && ./configure && make clean && make all": while running runtime: exit status 2
I fixed the error with the "missing include" of climits and ended up back at:
g++ -DHAVE_CONFIG_H -I. -I ./src -I ./src/p44utils -I ./src/p44lrgraphics -I ./src/p44utils/thirdparty/civetweb -I ./src/p44utils/thirdparty/slre -idirafter ./src/p44utils/thirdparty -I ./src/p44vdc/pbuf/gen -I ./src/p44vdc/vdc_common -I ./src/p44vdc/behaviours -I ./src/p44vdc/deviceclasses/simpleio -I ./src/p44vdc/deviceclasses/bridge -I ./src/p44vdc/deviceclasses/proxy -I ./src/p44vdc/deviceclasses/custom -I ./src/p44vdc/deviceclasses/evaluator -I ./src/p44vdc/deviceclasses/enocean -I ./src/p44vdc/deviceclasses/dmx -I ./src/p44vdc/deviceclasses/eldat -I ./src/p44vdc/deviceclasses/zf -I ./src/p44vdc/deviceclasses/dali -I ./src/p44vdc/deviceclasses/hue -I ./src/p44vdc/deviceclasses/ledchain -D ENABLE_RRDB=0 -D ENABLE_P44FEATURES=0 -D ENABLE_RPIWS281X=0 -D ENABLE_OLA=0 -D ENABLE_PNG=0 -D ENABLE_UBUS=0 -D DISABLE_I2C=1 -D ENABLE_MODBUS=0 -D ENABLE_UWSC=0 -I/usr/include/json-c -D_REENTRANT -D NO_SSL_DL=1 -D BOOST_BIND_GLOBAL_PLACEHOLDERS=1 -D DISABLE_I2C=1 -g -O2 -MT src/p44vdc/vdc_common/vdcd-outputbehaviour.o -MD -MP -MF src/p44vdc/vdc_common/.deps/vdcd-outputbehaviour.Tpo -c -o src/p44vdc/vdc_common/vdcd-outputbehaviour.o `test -f 'src/p44vdc/vdc_common/outputbehaviour.cpp' || echo './'`src/p44vdc/vdc_common/outputbehaviour.cpp
src/p44vdc/vdc_common/outputbehaviour.cpp: In member function 'p44::MLMicroSeconds p44::OutputBehaviour::outputReportInterval()':
src/p44vdc/vdc_common/outputbehaviour.cpp:308:7: error: 'mBridgePushInterval' was not declared in this scope
308 | if (mBridgePushInterval==Infinite || mBridgePushInterval==Never) return Never; // no regular updates
| ^~~~~~~~~~~~~~~~~~~
src/p44vdc/vdc_common/outputbehaviour.cpp:309:10: error: 'mBridgePushInterval' was not declared in this scope
309 | return mBridgePushInterval; // bridges want regular updates in about this intervals when e.g. a transition is going on
| ^~~~~~~~~~~~~~~~~~~
src/p44vdc/vdc_common/outputbehaviour.cpp: In member function 'virtual bool p44::OutputBehaviour::accessField(p44::PropertyAccessMode, p44::ApiValuePtr, p44::PropertyDescriptorPtr)':
src/p44vdc/vdc_common/outputbehaviour.cpp:830:15: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
830 | if (mBridgePushInterval==Infinite) aPropValue->setNull();
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:831:46: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
831 | aPropValue->setDoubleValue((double)mBridgePushInterval/Second);
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:834:46: error: 'mMinReportInterval' was not declared in this scope; did you mean 'minReportInterval_key'?
834 | aPropValue->setDoubleValue((double)mMinReportInterval/Second);
| ^~~~~~~~~~~~~~~~~~
| minReportInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:857:11: error: 'mBridgePushInterval' was not declared in this scope; did you mean 'bridgePushInterval_key'?
857 | mBridgePushInterval = aPropValue->isNull() ? Infinite : aPropValue->doubleValue()*Second;
| ^~~~~~~~~~~~~~~~~~~
| bridgePushInterval_key
src/p44vdc/vdc_common/outputbehaviour.cpp:860:11: error: 'mMinReportInterval' was not declared in this scope; did you mean 'minReportInterval_key'?
860 | mMinReportInterval = aPropValue->doubleValue()*Second;
| ^~~~~~~~~~~~~~~~~~
| minReportInterval_key
make[1]: *** [Makefile:4074: src/p44vdc/vdc_common/vdcd-outputbehaviour.o] Error 1
make[1]: Leaving directory '/vdcd'
make: *** [Makefile:1553: all] Error 2
hi @hhenkel,
Hi, sorry for bothering you again after all those years with a container build issue.
Sorry for the problems with the container build, but this is a third party contribution, I myself do not really use it (I build natively on macOS and cross-compile to various OpenWrt targets), so problems escape me until somebody else tries.
I saw that p44mbrd is available and was wondering if that enables me, to hook up my digitalstrom installation to home assistant.
Yes it does! p44mbrd works fine with HA. And with the new direct dS485 support in vdcd (not yet in main, see luz branch), that works down to the dS terminal block level. (BTW: For trying that, you might also consider using the free Rpi image, or build the p44-xx-open OpenWrt based distro)
I therefore tried to build the container image with the current
Dockerfilewhich fails with the following error: [...]src/p44lrgraphics/blocksview.cpp:661:1: sorry, unimplemented: non-trivial designated initializers not supported
Newer compilers apparently don't see that initializer { NULL } as non-trivial so it works with those, but it is a bit ugly and I just replaced these project-wide with a macro that puts a fully specified terminator that should also work with older compilers.
[...]
308 | if (mBridgePushInterval==Infinite || mBridgePushInterval==Never) return Never; // no regular updates | ^~~~~~~~~~~~~~~~~~~ src/p44vdc/vdc_common/outputbehaviour.cpp:309:10: error: 'mBridgePushInterval' was not declared in this scope
Ok, these are an #ifdef inconsistency when compiling without ENABLE_JSONBRIDGEAPI set. I will fix that in the sources.
However, when your goal is to build vdcd to connect p44mbrd to, you need exactly that JSON bridge API. So you might want to make sure you run the build with ENABLE_JSONBRIDGEAPI=1.
At this time, default build does not set it (see p44vdc_config.hpp, lines 157ff), but I will add this, as this API is getting quite important these days.
So for a quick fix, just runnig configure with that extra definition should make the build work:
./configure CPPFLAGS="-DENABLE_JSONBRIDGEAPI=1"
hi again @hhenkel,
I have investigated a bit further and could update the luz branch such that the docker build now runs through without manual modifications. Note that main is not yet updated, so you need to clone the luz branch to get the new Dockerfile and also direct the docker build to use that branch:
BRANCH=luz
git clone -b ${BRANCH} https://github.com/plan44/vdcd
cd vdcd
docker build --build-arg BRANCH=${BRANCH} -t my_vdcd .
With this, the docker build runs through, including the bridge API you'll need for p44mbrd.
I also updated the README.md to reflect the changes in 5ab8a318835394e86e031112a8eb2983c591f8bc
let me know if that works for you…
Hi @plan44 ,
thanks for the help and the updates. I was able to build the "luz" branch locally and via a github matrix workflow. I can open up a pull request if you are interested in integrating this to your repository.