Skip to content

Support Ubuntu 22.04.2 LTS ~ Build fails #82

@kdschlosser

Description

@kdschlosser

clone of the master branch

Environment

Ubuntu 22.04.2 LTS
GNU Make 4.3
Cmake 3.22.1
Ninja 1.10.1
GCC 11.4.0

Commands ran

git clone https://github.com/SiliconLabsSoftware/z-wave-protocol-controller
cd z-wave-protocol-controller
./helper.mk setup 

The first failure is when I run ./helper.mk setup. the package python3-linkify-it doesn't exist for Ubuntu 22.04.2 LTS . I edited the helper.mk file and commented out that package. I installed the package manually using pip3 install linkify-it-py and I ran the setup again, this time it completed.

as per the readme file I ran ./helper.mk run after the setup was complete and this failed stating

I decide to try ./helper.mk build and this command started doing more work but ended up failing with the following error

FAILED: unifysdk-populate-prefix/src/unifysdk-populate-stamp/unifysdk-populate-patch ~/z-wave-protocol-controller/build/_deps/unifysdk-subbuild/unifysdk-populate-prefix/src/unifysdk-populate-stamp/unifysdk-populate-patch
cd ~/z-wave-protocol-controller/build/_deps/unifysdk-src && /usr/bin/git -C ~/z-wave-protocol-controller/build/_deps/unifysdk-src am --ignore-whitespace ~/z-wave-protocol-controller/patches/UnifySDK/0001-build-Relax-compiler-warnings-to-support-more-compil.patch ~/z-wave-protocol-controller/patches/UnifySDK/0002-tests-components-testframework-libs-cmock-Remove-ven.patch ~/z-wave-protocol-controller/patches/UnifySDK/0003-tests-p-cmock-Add-0001-Added-array_as_byte-config-op.patch ~/z-wave-protocol-controller/patches/UnifySDK/0004-tests-build-cmake-Use-Upstream-cmock.patch ~/z-wave-protocol-controller/patches/UnifySDK/0005-git-Remove-.gitattributes.patch ~/z-wave-protocol-controller/patches/UnifySDK/0006-git-docker-uic-resources-Removed-as-not-part-of-Unif.patch && /usr/bin/cmake -E touch ~/z-wave-protocol-controller/build/_deps/unifysdk-subbuild/unifysdk-populate-prefix/src/unifysdk-populate-stamp/unifysdk-populate-patch
Committer identity unknown

I fixed that error by running the following commands

git config --global user.email "*******@*******.com"
git config --global user.name "*****************"

When I ran the ./helper.mk build command again it said the build was up to date which I know it wasn't because it had failed.

I ran ./helper.mk clean only to find out that command is not available. OYE!!! This is starting to become a big headache now...

After spending some time reading the helper.mk build script it appeared that I should be able to compile at this point using CMake directly... So I tried that out running cmake -G Ninja. This completed successfully without any errors but there was a plethora of warnings. See attached file.

cmake build.txt

Then I ran Ninja to compile and the attached file below is the output from that.

compile output.txt

Once again a plethora of warnings and the build failed with the following error

FAILED: applications/zpc/components/zwave_api/CMakeFiles/zwapi_protocol_mem_mock.dir/mocks/zwapi_protocol_mem_mock.c.o
/usr/bin/cc -DUNITY_DOUBLE_PRECISION=1e-12f -DUNITY_INCLUDE_DOUBLE -DUNITY_SUPPORT_64 -I~/z-wave-protocol-controller/include -I~/z-wave-protocol-controller/applications/zpc/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_config/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_gbl_interface/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_definitions/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_attribute_store/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_datastore/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/unify_dotdot_attribute_store/zap-generated/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_dotdot/zap-generated/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_smartstart_management/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/core -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/platform/posix -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_attribute_resolver/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/core/sys -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_main_fd/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/unify_dotdot_attribute_store/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_dotdot_mqtt/zap-generated/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_mqtt/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/unify_application_monitoring/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_stdin/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_ota/platform/posix -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_attribute_mapper/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_attribute_utils/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_ota/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_dotdot_mqtt/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_main/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_rust/unify_middleware/include -I~/z-wave-protocol-controller/_deps/cmock-src/src -I~/z-wave-protocol-controller/_deps/cmock-src/vendor/unity/src -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/testframework/include -I~/z-wave-protocol-controller/applications/zpc/components/zwave/zwave_definitions/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/include -I~/z-wave-protocol-controller/_deps/unifysdk-build/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/unify_attribute_poll/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_log/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_log/../../include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/core/dev -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/core/lib -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_contiki/cpu/native -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/uic_multi_invoke/include -I/../../include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/unify_node_state_monitor/include -I~/z-wave-protocol-controller/_deps/unifysdk-src/components/unify_validator/include -pipe -Wall -g -std=gnu99 -MD -MT applications/zpc/components/zwave_api/CMakeFiles/zwapi_protocol_mem_mock.dir/mocks/zwapi_protocol_mem_mock.c.o -MF applications/zpc/components/zwave_api/CMakeFiles/zwapi_protocol_mem_mock.dir/mocks/zwapi_protocol_mem_mock.c.o.d -o applications/zpc/components/zwave_api/CMakeFiles/zwapi_protocol_mem_mock.dir/mocks/zwapi_protocol_mem_mock.c.o -c ~/z-wave-protocol-controller/applications/zpc/components/zwave_api/mocks/zwapi_protocol_mem_mock.c
In file included from ~/z-wave-protocol-controller/applications/zpc/components/zwave_api/mocks/zwapi_protocol_mem_mock.c:6:
~/z-wave-protocol-controller/applications/zpc/components/zwave_api/mocks/zwapi_protocol_mem_mock.h:6:10: fatal error: zwapi_protocol_mem.h: No such file or directory
    6 | #include "zwapi_protocol_mem.h"
      |  

There are some issues with the build system as it is seen.

  • The patches that are applied have reference to a repository that no longer exists, not sure what is going on there.
  • I don't understand why there are so many dependencies that have to be installed considering this library only uses the stdlib for accessing the serial port and for timekeeping functions.
  • I feel that there are dependencies being installed that never get used. This increases the amount of time it takes to compile but ti also adds entry points for all kinds of possible issues. The biggest issue is an OS's package manager not being updated with current builds of different libraries.

If there is anyone that has managed to compile this library and can shed some insight on how to do it (without using docker) it would be greatly appreciated.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions