| .. howto_code_voltha-protos: |
| |
| Modifying repository voltha-protos |
| ================================== |
| |
| #. Clone repository `voltha-protos <https://gerrit.opencord.org/plugins/gitiles/voltha-protos/+/refs/heads/master>`_ |
| #. Modify structures, sources & makefiles as needed. |
| #. Build, test and lint locally to validate sources. |
| #. Commit changes, code review, jenins build and deploy. |
| #. Update external dependent repositories to use the new version. |
| |
| Clone, edit, build & test |
| ------------------------- |
| |
| .. code:: bash |
| git clone ssh://gerrit.opencord.org:29418/voltha-protos.git |
| cd voltha-protos |
| vi ... |
| |
| % make lint |
| % make build |
| % make test |
| |
| .. list-table:: Build & Test locally |
| :widths: 30, 80 |
| :header-rows: 1 |
| |
| * - Command |
| - Description |
| * - make sterile |
| - Remove previously generated targets |
| * - make protos |
| - Generate prototypes for go, java & python (dependency for target:build) |
| * - make build |
| - make protos; compile: go, java & python |
| * - make test |
| - Validate proto changes |
| * - make lint |
| - Syntax check sources prior to commit. |
| |
| Update all external repositories to consume the new repo:voltha-protos version |
| ------------------------------------------------------------------------------ |
| |
| - Each external VOLTHA repository will need to have dependencies mentioned in |
| the file go.mod updated. |
| - Rebuild each repository in hierarchial order also updating external libs as |
| they are rebuilt. |
| |
| .. list-table:: External repositories to modify |
| :widths: 30, 80 |
| :header-rows: 1 |
| |
| * - Repository |
| - File(s) to edit |
| * - bbsim |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/bbsim/+/refs/heads/master/go.mod>`_ |
| * - ofagent-go |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/ofagent-go/+/refs/heads/master/go.mod>`__ |
| * - voltctl |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/voltctl/+/refs/heads/master/go.mod>`__ |
| * - voltha-go |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/voltha-go/+/refs/heads/master/go.mod>`__ |
| * - voltha-go-controller |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/voltha-go-controller/+/refs/heads/master/go.mod>`__ |
| * - voltha-lib-go |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/voltha-lib-go/+/refs/heads/master/go.mod>`__ |
| * - voltha-openolt-adapter |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/voltha-openolt-adapter/+/refs/heads/master/go.mod>`__ |
| * - voltha-openonu-adapter-go |
| - `go.mod <https://gerrit.opencord.org/plugins/gitiles/voltha-openonu-adapter-go/+/refs/heads/master/go.mod>`__ |
| * - voltha-system-tests |
| - `requirements.txt <https://gerrit.opencord.org/plugins/gitiles/voltha-system-tests/+/refs/heads/master/requirements.txt>`_ (virtualenv/testing) |
| |
| .. list-table:: Foreach external repository |
| :widths: 30, 80 |
| :header-rows: 1 |
| |
| * - Command |
| - Description |
| * - vi {repo}/go.mod |
| - Bump version of repo:voltha-proto to latest published |
| * - vi {repo}/go.mod |
| - Bump external module version(s) during hierarcical build. |
| * - go mod edit -replace [...] |
| - Use the go mod tool to update version of voltha-protos and friends. |
| * - go mod tidy |
| - Cleanup syntax issues in golang source that will fail your pending commit |
| * - go mod vendor |
| - | Update sources and dependencies beneath the vendor/ directory. |
| | See also `go-mod-vendor <https://go.dev/ref/mod#go-mod-vendor>`_, `Packages & Modules <https://golangbyexample.com/packages-modules-go-second/>`_ |
| * - make build |
| - Compile with updated module dependencies. |
| * - make test |
| - Sanity check everything is still working. |
| * - make lint LOCAL_FIX_PERMS=1 |
| - | Syntax check sources for problems prior to checkin. |
| | LOCAL_FIX_PERMS=1 (optional) can workaround docker related permission problems. |
| |
| Problems with pip install |
| ------------------------- |
| |
| - grpcio `VOL-5348 <https://jira.opencord.org/browse/VOL-5348>`__ |
| |
| - Clone repo. |
| - Create a skeleton pytyon virtualenv. |
| - From requirements.txt file entries, pip install failing versioned package. |
| |
| .. code:: bash |
| :caption: Pip install debugging |
| |
| # Debug using virtualenv |
| % virtualenv -p python3 .venv |
| % source .venv/bin/activate |
| % pip install grpcio==1.39.0 |
| |
| # Debug using makefile target 'venv' |
| % echo > requirements.txt |
| % make venv |
| % git checkout requirements.txt |
| % pip install -r requirements.txt |
| |
| longintrepr.h |
| ^^^^^^^^^^^^^ |
| |
| .. code:: bash |
| :caption: Include missing header |
| |
| mkdir -p include |
| pusdh include |
| find /usr/include -name 'longintrepr.h' -print0 | xargs -0 -I'{}' ln -s {} . |
| popd include |
| export CFLAGS='-I./include' |