phosphor logging provides mechanism for common event and logging creation based on information from the journal log.
To build this package, do the following steps:
1. ./bootstrap.sh
2. ./configure ${CONFIGURE_FLAGS}
3. make
To clean the repository run `./bootstrap.sh clean`.
- This document captures steps for adding application specific error YAML files and generating local elog-errors.hpp header file for application use.
- Should cater for continuous integration (CI) build, bitbake image build, and local repository build.
- Make is called on the repository that is modified.
- Dependent packages are pulled based on the dependency list specified in the configure.ac script.
- Native recipes copy error YAML files to shared location.
- phosphor-logging builds elog-errors.hpp by parsing the error YAML files from the shared location.
- Copies local error YAML files to the shared location in SDK
- Make generates elog-errors.hpp by parsing the error YAML files from the shared location.
Reference
Modify Makefile.am to export newly added error YAML to shared location
yamldir = ${datadir}/phosphor-dbus-yaml/yaml
nobase_yaml_DATA = \
org/open_power/Host.errors.yaml
- Add a conditional check "GEN_ERRORS"
- Disable the check for recipe bitbake image build
- Enable it for local repository build
- If "GEN_ERRORS" is enabled, build generates elog-errors.hpp header file.
# Generate phosphor-logging/elog-errors.hpp
if GEN_ERRORS
ELOG_MAKO ?= elog-gen-template.mako.hpp
ELOG_DIR ?= ${OECORE_NATIVE_SYSROOT}${datadir}/phosphor-logging/elog
ELOG_GEN_DIR ?= ${ELOG_DIR}/tools/
ELOG_MAKO_DIR ?= ${ELOG_DIR}/tools/phosphor-logging/templates/
YAML_DIR ?= ${OECORE_NATIVE_SYSROOT}${datadir}/phosphor-dbus-yaml/yaml
phosphor-logging/elog-errors.hpp:
@mkdir -p ${YAML_DIR}/org/open_power/
@cp ${top_srcdir}/org/open_power/Host.errors.yaml \
${YAML_DIR}/org/open_power/Host.errors.yaml
@mkdir -p `dirname $@`
@chmod 777 $(ELOG_GEN_DIR)/elog-gen.py
$(AM_V_at)$(PYTHON) $(ELOG_GEN_DIR)/elog-gen.py -y ${YAML_DIR} \
-t ${ELOG_MAKO_DIR} -m ${ELOG_MAKO} -o $@
endif
- Append elog-errors.hpp to BUILT_SOURCES list and put it in conditional check GEN_ERRORS so that the elog-errors.hpp is generated only during local repository build.
if GEN_ERRORS
nobase_nodist_include_HEADERS += \
phosphor-logging/elog-errors.hpp
endif
if GEN_ERRORS
BUILT_SOURCES += phosphor-logging/elog-errors.hpp
endif
- As the same Makefile is used both for recipe image build and native recipe build, add a conditional to ensure that only installation of error yaml files happens during native build. It is not required to build repository during native build.
if !INSTALL_ERROR_YAML
endif
Reference
-
Install error yaml option(argument) is enabled for native recipe build and disabled for bitbake build.
-
When install error yaml option is disabled do not check for target specific packages in autotools configure script.
AC_ARG_ENABLE([install_error_yaml],
AS_HELP_STRING([--enable-install_error_yaml],
[Enable installing error yaml file]),[], [install_error_yaml=no])
AM_CONDITIONAL([INSTALL_ERROR_YAML],
[test "x$enable_install_error_yaml" = "xyes"])
AS_IF([test "x$enable_install_error_yaml" != "xyes"], [
..
..
])
AC_ARG_ENABLE([gen_errors],
AS_HELP_STRING([--enable-gen_errors], [Enable elog-errors.hpp generation ]),
[],[gen_errors=yes])
AM_CONDITIONAL([GEN_ERRORS], [test "x$enable_gen_errors" != "xno"])
Reference
- https://github.com/openbmc/openbmc/blob/master/meta-openbmc-machines\ /meta-openpower/common/recipes-phosphor/debug/openpower-debug-collector.bb
- Extend the recipe for native and native SDK builds
BBCLASSEXTEND += "native nativesdk"
- Native recipe caters only for copying error yaml files to shared location.
- For native and native SDK build remove dependency on packages that recipe build depends
DEPENDS_remove_class-native = "phosphor-logging"
DEPENDS_remove_class-nativesdk = "phosphor-logging"
- Add package config to enable/disable install_error_yaml feature.
## Add package config to enable/disable install_error_yaml feature
PACKAGECONFIG ??= "install_error_yaml"
PACKAGECONFIG[install_error_yaml] = " \
--enable-install_error_yaml, \
--disable-install_error_yaml, ,\
"
PACKAGECONFIG_add_class-native = "install_error_yaml"
PACKAGECONFIG_add_class-nativesdk = "install_error_yaml"
PACKAGECONFIG_remove_class-target = "install_error_yaml"
- Disable gen_errors argument for bitbake image build as the application uses the elog-errors.hpp generated by phosphor-logging
- Argument is enabled by default for local repository build in the configure script of the local repository.
XTRA_OECONF += "--disable-gen_errors"
- During local build use --prefix=/usr for the configure script.
Reference