X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=BUILD;h=bf4121af1c9992ce4695152605f4765803bcf555;hb=8761b5d1ab23c663814b8f83191e4a32a20e1429;hp=37a5045244bb8283b9550f16a9d3bd9e121b2d23;hpb=d4f18ba140f06b863ac51697d1a0d420bcd3ae6a;p=ric-plt%2Flib%2Frmr.git diff --git a/BUILD b/BUILD index 37a5045..bf4121a 100644 --- a/BUILD +++ b/BUILD @@ -18,9 +18,9 @@ # -Building RMr +Building RMR -The RIC Message Router (RMr) is built with CMake, and requires +The RIC Message Router (RMR) is built with CMake, and requires a modern gcc compiler and make to be installed on the build system. Typically, installing the following list of packages in a container (Ubuntu) is all that is needed to craft a @@ -34,7 +34,7 @@ interactively. Bash is assumed necessary for CMake. Build process -To build RMr, the usual CMake steps are followed: +To build RMR, the usual CMake steps are followed: mkdir build cd build cmake .. [options] @@ -44,10 +44,33 @@ To build RMr, the usual CMake steps are followed: This will create a .deb (provided the system supports this) in the build directory. It's that simple. +The following flags may be given on the 'cmake' command line +(options) which are outside of "normal" CMake flags and affect +the configuration: + + -DBUILD_DOC=1 Man pages generated + -DDEV_PKG=1 Development package configuration + -DIGNORE_LIBDIR Ignore the system preferred library directory and install in /usr/local/lib + -DMAN_PREFIX= Supply a path where man pages are installed (default: /usr/share/man) + -DPACK_EXTERNALS=1 Include external libraries used to build in the run-time package + -DPRESERVE_PTYPE=1 Do not change the processor type when naming deb packages + -DSKIP_EXTERNALS=1 Do not use Nano/NNG submodules when building; use installed packages + + +Packages +The build can be configured to generate either a run-time or +development package. The run-time generation is the default and +the -DDEV_PKG=1 option must be given to generate the development +package. The run-time package contains only the shared library +files (*.so), and the development package contains the headers, +man pages (if the man option is set) and archive (.a) files. +Resulting package names are illustrated in the CI section below. + + Continuous Integration Build Use the Dockerfile in the ci/ subdirectory. This installs all -the required tools, then builds RMr and executes the unit and -programm tests. If tests pass, then an image is created in the +the required tools, then builds RMR and executes the unit and +program tests. If tests pass, then an image is created in the local registry with both run-time and development packages. To support the distribution of package(s) created during the @@ -58,18 +81,12 @@ packages available from the image. Currently, both .deb and The following is a sample YAML file generated during this process: - # package types which might be listed below --- - pkg_types: - - deb - - rpm - packages: - - development: - deb: /tmp/rmr-dev_1.0.34_x86_64.deb - rpm: /tmp/rmr-dev-1.0.34-x86_64.rpm - - runtime: - deb: /tmp/rmr_1.0.34_x86_64.deb - rpm: /tmp/rmr-1.0.34-x86_64.rpm + files: + - /tmp/rmr-dev_1.0.34_x86_64.deb + - /tmp/rmr-dev-1.0.34-x86_64.rpm + - /tmp/rmr_1.0.34_x86_64.deb + - /tmp/rmr-1.0.34-x86_64.rpm ... @@ -104,7 +121,7 @@ libraries (.e.g -L) on the command line, or via environment variables (e.g.. C_INCLUDE_PATH, LD_LIBRARY_PATH, LIBRARY_PATH). It may also be necessary to have the library directory defined in the environment at run time. It is difficult to know what -each system needs, but the following linker ooptions work when +each system needs, but the following linker options work when libraries are installed in the system spots: -lrmr_nng -lnng -lpthread @@ -116,19 +133,19 @@ a different spot (e.g. in $HOME/usr): Libraries -RMr supports both NNG and Nanomsg as underlying transport. They -are separate beasts, and while an NNG based program can -communicate with a Nanomsg based programme, their APIs are NOT -compatible. For this reason, and others, RMr generates two -libraries and requires that the underlying transport be selected -at link time rather than run time. The RMr API for both underlying -mechanisms is the same, so generating a NNG and Nanomsg version -of a programme should require no extra work; other than adding -a second link statement and giving it a different name. - -Nanomsg is on its way out with respect to community support. RMr -will continue to support Nanomsg for a short period of time, but -new programmes should NOT use Nanomsg. +RMR supports only NNG as the underlying transport. Nanomsg +support was dropped starting with version 1.0.45 as Nanomsg +has reached end of life. The package generation and install +will produce a single RMR library: librmr_nng. RMR is designed +to support different underlying transport mechanisms, which +might require separate libraries, and thus the library name is +given a suffix of _nng to reflect the transport mechanism +in use. + +Regardless of transport mechanism supported by an RMR library, +the RMR API will be identical, thus it is possible for an application +to shift mechanisms simply by referencing a different library (should +multiple RMR libraries become available). Manual Pages