IMPORTANT: this repo is archived and moved to https://github.com/aosedge/aos_core_cpp.
Aos Service Manager (SM) is a part of Aos system which resides on the device side and stands for the following tasks:
- communicate with the communication manager;
- install, remove, start, stop Aos services;
- configure Aos services network;
- configure and monitor Aos services and system resource usage;
- provide persistent storage and state handling for Aos services.
See architecture document for more details.
sudo apt install lcov libsofthsm2 libsystemd-dev
pip install conanTo make a build for host please run:
./host_build.shIt installs all external dependencies to conan, creates ./build directory and builds the manager with unit tests and coverage calculation target.
It is also possible to customize the build using different cmake options:
cd ${BUILD_DIR}
conan install ../conan/ --output-folder . --settings=build_type=Debug --build=missing
cmake .. -DCMAKE_TOOLCHAIN_FILE=./conan_toolchain.cmake -DWITH_TEST=ON -DCMAKE_BUILD_TYPE=DebugCmake options:
| Option | Description |
|---|---|
WITH_TEST |
creates unit tests target |
WITH_COVERAGE |
creates coverage calculation target |
WITH_DOC |
creates documentation target |
Options should be set to ON or OFF value.
Cmake variables:
| Variable | Description |
|---|---|
CMAKE_BUILD_TYPE |
Release, Debug, RelWithDebInfo, MinSizeRel |
CMAKE_INSTALL_PREFIX |
overrides default install path |
Build and run:
./host_build.sh
cd ${BUILD_DIR}
make testlcov utility shall be installed on your host to run this target:
sudo apt install lcovBuild and run:
./host_build.sh
cd ${BUILD_DIR}
make coverageThe overall coverage rate will be displayed at the end of the coverage target output:
...
Overall coverage rate:
lines......: 94.7% (72 of 76 lines)
functions..: 100.0% (39 of 39 functions)Detailed coverage information can be find by viewing ./coverage/index.html file in your browser.
doxygen package should be installed before generation the documentations:
sudo apt install doxygenhost_build.sh tool doesn't generate documentation. User should run the following commands to do that:
cd ${BUILD_DIR}
conan install ../conan/ --output-folder . --settings=build_type=Debug --build=missing
cmake .. -DCMAKE_TOOLCHAIN_FILE=./conan_toolchain.cmake -DWITH_DOC=ON
make docThe result documentation is located in ${BUILD_DIR}/doc folder. And it can be viewed by opening
./doc/html/index.html file in your browser.
The default install path can be overridden by setting CMAKE_INSTALL_PREFIX variable.
Configure example with user defined install prefix:
cd ${BUILD_DIR}
conan install ../conan/ --output-folder . --settings=build_type=Release --build=missing
cmake .. -DCMAKE_TOOLCHAIN_FILE=./conan_toolchain.cmake -DCMAKE_INSTALL_PREFIX=/my/locationInstall:
cd ${BUILD_DIR}
make installThe following tools are used for code formatting and analyzing:
| Tool | Description | Configuration | Link |
|---|---|---|---|
clang-format |
used for source code formatting | .clang-format | https://clang.llvm.org/docs/ClangFormat.html |
cmake-format |
used for formatting cmake files | .cmake-format | https://github.com/cheshirekow/cmake_format |
cppcheck |
used for static code analyzing | https://cppcheck.sourceforge.io/ |