Merge "RIC-1044: Add array size checks"
[ric-plt/e2mgr.git] / E2Manager / build-e2mgr-ubuntu.sh
1 #!/bin/bash
2 ##############################################################################
3 #
4 #   Copyright (c) 2020 AT&T Intellectual Property.
5 #
6 #   Licensed under the Apache License, Version 2.0 (the "License");
7 #   you may not use this file except in compliance with the License.
8 #   You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #   Unless required by applicable law or agreed to in writing, software
13 #   distributed under the License is distributed on an "AS IS" BASIS,
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #   See the License for the specific language governing permissions and
16 #   limitations under the License.
17 #
18 ##############################################################################
19
20 # Installs libraries and builds E2 manager
21 # Prerequisites:
22 #   Debian distro; e.g., Ubuntu
23 #   NNG shared library
24 #   golang (go); tested with version 1.12
25 #   current working directory is E2Manager
26 #   running with sudo privs, which is default in Docker
27
28 # Stop at first error and be verbose
29 set -eux
30
31 echo "--> e2mgr-build-ubuntu.sh"
32
33 # Install RMR from deb packages at packagecloud.io
34 rmr=rmr_4.9.4_amd64.deb
35 wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/$rmr/download.deb
36 sudo dpkg -i $rmr
37 rm $rmr
38 rmrdev=rmr-dev_4.9.4_amd64.deb
39 wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/$rmrdev/download.deb
40 sudo dpkg -i $rmrdev
41 rm $rmrdev
42
43 # required to find nng and rmr libs
44 export LD_LIBRARY_PATH=/usr/local/lib
45
46 # go installs tools like go-acc to $HOME/go/bin
47 # ubuntu minion path lacks go
48 export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
49
50 # install the go coverage tool helper
51 go get -v github.com/ory/go-acc
52
53 cd 3rdparty/asn1codec \
54     && make clobber \
55     && make \
56     && cd ../..
57
58 go build -v app/main.go
59
60 # Execute UT and measure coverage
61 # cgocheck=2 enables expensive checks that should not miss any errors,
62 # but will cause your program to run slower.
63 # clobberfree=1 causes the garbage collector to clobber the memory content
64 # of an object with bad content when it frees the object.
65 # gcstoptheworld=1 disables concurrent garbage collection, making every
66 # garbage collection a stop-the-world event.
67 # Setting gcstoptheworld=2 also disables concurrent sweeping after the
68 # garbage collection finishes.
69 # Setting allocfreetrace=1 causes every allocation to be profiled and a
70 # stack trace printed on each object's allocation and free.
71 export GODEBUG=cgocheck=2,clobberfree=1,gcstoptheworld=2,allocfreetrace=0
72 # Static route table is provided in git repo
73 export RMR_SEED_RT=$(pwd)/router_test.txt
74 # writes to coverage.txt by default
75 # SonarCloud accepts the text format
76 go-acc -- -v $(go list ./... | grep -vE '(/mocks|/tests|/e2managererrors|/enums)' )
77
78 # TODO: drop rewrite of path prefix when SonarScanner is extended
79 # rewrite the module name to a directory name in the coverage report
80 # https://jira.sonarsource.com/browse/SONARSLANG-450
81 sed -i -e 's/^e2mgr/E2Manager/' coverage.txt
82
83 echo "--> e2mgr-build-ubuntu.sh ends"