From: Shuky Har-Noy Date: Tue, 17 Mar 2020 17:17:50 +0000 (+0000) Subject: Merge "Adjust build script for portability" X-Git-Tag: R5_RC~122 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=a75da9a56d61ca4754650d44a54bbf0b04f610d1;hp=-c;p=ric-plt%2Fe2mgr.git Merge "Adjust build script for portability" --- a75da9a56d61ca4754650d44a54bbf0b04f610d1 diff --combined E2Manager/Dockerfile index 6a95812,5f80d82..1352405 --- a/E2Manager/Dockerfile +++ b/E2Manager/Dockerfile @@@ -23,9 -23,10 +23,10 @@@ FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu16-c-go:3-u16.04-nng as ubuntu WORKDIR /opt/E2Manager - COPY . . + COPY . . # Install dependencies, compile and test the module + RUN apt-get update && apt-get install -y sudo RUN bash build-e2mgr-ubuntu.sh # Build deployable container @@@ -36,16 -37,16 +37,16 @@@ RUN apt-get update && apt-get install - iputils-ping \ curl \ tcpdump - + COPY --from=ubuntu /opt/E2Manager/router.txt /opt/E2Manager/router.txt COPY --from=ubuntu /opt/E2Manager/main /opt/E2Manager/main COPY --from=ubuntu /opt/E2Manager/resources/configuration.yaml /opt/E2Manager/resources/configuration.yaml COPY --from=ubuntu /opt/E2Manager/resources/rmr.verbose /tmp/rmr.verbose -COPY --from=ubuntu /usr/local/lib/librmr_nng.so.1 /usr/local/lib/librmr_nng.so.1 -COPY --from=ubuntu /usr/local/lib/libnng.so.1 /usr/local/lib/libnng.so.1 +COPY --from=ubuntu /usr/local/lib/librmr_si.so.3 /usr/local/lib/librmr_si.so.3 + WORKDIR /opt/E2Manager ENV LD_LIBRARY_PATH=/usr/local/lib \ - port=3800 + port=3800 ENV RMR_SEED_RT=router.txt ENV RMR_VCTL_FILE=/tmp/rmr.verbose EXPOSE 3800 diff --combined E2Manager/build-e2mgr-ubuntu.sh index ae1794d,d298f57..e623ab8 --- a/E2Manager/build-e2mgr-ubuntu.sh +++ b/E2Manager/build-e2mgr-ubuntu.sh @@@ -20,42 -20,24 +20,24 @@@ # Installs libraries and builds E2 manager # Prerequisites: # Debian distro; e.g., Ubuntu - # cmake (version?) - # gcc/g++ compiler (version?) - # golang (go), tested with version 1.12.0 + # NNG shared library + # golang (go); tested with version 1.12 # current working directory is E2Manager # running with sudo privs, which is default in Docker - # TODO: - # 1) drop go from $PATH when build minion is extended - # 2) drop rewrite of path prefix when SonarScanner is extended - # Stop at first error and be verbose set -eux echo "--> e2mgr-build-ubuntu.sh" - # Build and install NNG, which requires ninja - apt-get install ninja-build - git clone https://github.com/nanomsg/nng.git \ - && cd nng \ - && git checkout e618abf8f3db2a94269a79c8901a51148d48fcc2 \ - && mkdir build \ - && cd build \ - && cmake -DBUILD_SHARED_LIBS=1 -G Ninja .. \ - && ninja \ - && ninja install \ - && cd ../.. \ - && rm -r nng - # Install RMR from deb packages at packagecloud.io -rmr=rmr_1.13.0_amd64.deb +rmr=rmr_3.5.1_amd64.deb wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/$rmr/download.deb - dpkg -i $rmr + sudo dpkg -i $rmr rm $rmr -rmrdev=rmr-dev_1.13.0_amd64.deb +rmrdev=rmr-dev_3.5.1_amd64.deb wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/$rmrdev/download.deb - dpkg -i $rmrdev + sudo dpkg -i $rmrdev rm $rmrdev # required to find nng and rmr libs @@@ -75,11 -57,16 +57,16 @@@ cd 3rdparty/asn1codec go build -v app/main.go # Execute UT and measure coverage - # cgocheck=2 enables expensive checks that should not miss any errors, but will cause your program to run slower. - # clobberfree=1 causes the garbage collector to clobber the memory content of an object with bad content when it frees the object. - # gcstoptheworld=1 disables concurrent garbage collection, making every garbage collection a stop-the-world event. - # Setting gcstoptheworld=2 also disables concurrent sweeping after the garbage collection finishes. - # Setting allocfreetrace=1 causes every allocation to be profiled and a stack trace printed on each object's allocation and free. + # cgocheck=2 enables expensive checks that should not miss any errors, + # but will cause your program to run slower. + # clobberfree=1 causes the garbage collector to clobber the memory content + # of an object with bad content when it frees the object. + # gcstoptheworld=1 disables concurrent garbage collection, making every + # garbage collection a stop-the-world event. + # Setting gcstoptheworld=2 also disables concurrent sweeping after the + # garbage collection finishes. + # Setting allocfreetrace=1 causes every allocation to be profiled and a + # stack trace printed on each object's allocation and free. export GODEBUG=cgocheck=2,clobberfree=1,gcstoptheworld=2,allocfreetrace=0 export RIC_ID="bbbccc-abcd0e/20" # Static route table is provided in git repo @@@ -88,6 -75,7 +75,7 @@@ export RMR_SEED_RT=$(pwd)/router_test.t # SonarCloud accepts the text format go-acc $(go list ./... | grep -vE '(/mocks|/tests|/e2managererrors|/enums)' ) + # TODO: drop rewrite of path prefix when SonarScanner is extended # rewrite the module name to a directory name in the coverage report # https://jira.sonarsource.com/browse/SONARSLANG-450 sed -i -e 's/^e2mgr/E2Manager/' coverage.txt