.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
.. Copyright (C) 2019 Wind River Systems, Inc.

Developer-Guide
===============

.. contents::
   :depth: 3
   :local:


This project implements a real time platform to deploy the O-CU and O-DU and it's based on Yocto/OpenEmbedded.

This includes a Yocto/OpenEmbedded compatible layer meta-stx-oran and wrapper scripts
to pull all required Yocto/OE layers to build out the reference platform.

To contribute on this project, basic knowledge of Yocto/OpenEmbedded is needed, please refer to the following docs if you want to learn about how to develop with Yocto/OpenEmbedded:

- `Yocto dev manual`_
- `OpenEmbedded wiki`_

.. _`Yocto dev manual`: https://www.yoctoproject.org/docs/2.6.3/dev-manual/dev-manual.html
.. _`OpenEmbedded wiki`: http://www.openembedded.org/wiki/Main_Page



1. Prerequisite for build environment
-------------------------------------

* Your host need to meet the requirements for Yocto, please refer to:

  * `Compatible Linux Distribution`_
  * `Supported Linux Distributions`_
  * `Required Packages for the Build Host`_

The recommended and tested host is Ubuntu 16.04/18.04 and CentOS 7.

* To install the required packages for Ubuntu 16.04/18.04:

.. _`Compatible Linux Distribution`: https://www.yoctoproject.org/docs/2.6.3/brief-yoctoprojectqs/brief-yoctoprojectqs.html#brief-compatible-distro
.. _`Supported Linux Distributions`: https://www.yoctoproject.org/docs/2.6.3/ref-manual/ref-manual.html#detailed-supported-distros
.. _`Required Packages for the Build Host`: https://www.yoctoproject.org/docs/2.6.3/ref-manual/ref-manual.html#required-packages-for-the-build-host

::

  $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
    build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
    xz-utils debianutils iputils-ping make xsltproc docbook-utils fop dblatex xmlto \
    python-git

* To install the required packages for CentOS 7:

::

  $ sudo yum install -y epel-release
  $ sudo yum makecache
  $ sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \
    diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath socat \
    perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-Digest-SHA \
    python34-pip xz which SDL-devel xterm

2. Use wrapper script build_inf.sh to setup build env and build the INF AIO x86 image
-------------------------------------------------------------------------------------

::

  # Get the wrapper script with either curl or wget
  $ curl -o build_inf.sh 'https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf.sh;hb=HEAD'
  $ wget -O build_inf.sh 'https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf.sh;hb=HEAD'

  $ chmod +x build_inf.sh
  $ WORKSPACE=/path/to/workspace
  $ ./build_inf.sh -w ${WORKSPACE}

If all go well, you will get the ISO image in:
${WORKSPACE}/prj_oran_inf_anaconda/tmp-glibc/deploy/images/intel-corei7-64/inf-image-aio-installer-intel-corei7-64.iso

