1 FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu20-c-go:1.0.0 as buildenv
2 #FROM nexus3.o-ran-sc.org:10001/ubuntu:18.04 as buildenv
3 # spaces to save things in the build image to copy to final image
4 RUN mkdir -p /playpen/assets /playpen/src /playpen/bin
9 # versions we snarf from package cloud
14 # package cloud urls for wget
15 ARG PC_REL_URL=https://packagecloud.io/o-ran-sc/release/packages/debian/stretch
16 # ARG PC_STG_URL=https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch
19 RUN wget -nv --content-disposition ${PC_REL_URL}/rmr_${RMR_VER}_amd64.deb/download.deb && \
20 wget -nv --content-disposition ${PC_REL_URL}/rmr-dev_${RMR_VER}_amd64.deb/download.deb && \
21 dpkg -i rmr_${RMR_VER}_amd64.deb rmr-dev_${RMR_VER}_amd64.deb
23 # pull in xapp framework c++
24 RUN wget -nv --content-disposition ${PC_REL_URL}/ricxfcpp-dev_${XFCPP_VER}_amd64.deb/download.deb && \
25 wget -nv --content-disposition ${PC_REL_URL}/ricxfcpp_${XFCPP_VER}_amd64.deb/download.deb && \
26 dpkg -i ricxfcpp-dev_${XFCPP_VER}_amd64.deb ricxfcpp_${XFCPP_VER}_amd64.deb
28 # # snarf up SDL dependencies, then pull SDL package and install
29 RUN apt-get update && apt-get install -y \
30 libboost-filesystem1.67.0 \
31 libboost-system1.67.0 \
35 #RUN wget -nv --content-disposition ${PC_REL_URL}/sdl_${SDL_VER}-1_amd64.deb/download.deb && \
36 # wget -nv --content-disposition ${PC_REL_URL}/sdl-dev_${SDL_VER}-1_amd64.deb/download.deb &&\
37 # dpkg -i sdl-dev_${SDL_VER}-1_amd64.deb sdl_${SDL_VER}-1_amd64.deb
39 #RUN apt-get update && apt-get install -y cmake gcc make git g++ wget
41 RUN apt-get install -y libcpprest-dev
43 RUN apt-get install -y g++ git libboost-atomic-dev libboost-thread-dev libboost-system-dev libboost-date-time-dev libboost-regex-dev libboost-filesystem-dev libboost-random-dev libboost-chrono-dev libboost-serialization-dev libwebsocketpp-dev openssl libssl-dev ninja-build zlib1g-dev
45 RUN git clone https://github.com/Microsoft/cpprestsdk.git casablanca && \
49 cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
52 cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
56 RUN apt-get update && apt-get install -y cmake gcc make git g++ wget
57 #installing all dependicies for pistache
58 RUN apt-get update && apt-get install -y cmake gcc make \
59 git g++ wget meson libcurl4-openssl-dev libssl-dev pkg-config ninja-build
60 RUN git clone https://github.com/Tencent/rapidjson && \
64 cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
69 #building and installing pistache
70 RUN git clone https://github.com/pistacheio/pistache.git
74 -DPISTACHE_USE_SSL=true \
75 -DPISTACHE_BUILD_EXAMPLES=true \
76 -DPISTACHE_BUILD_TESTS=true \
77 -DPISTACHE_BUILD_DOCS=false \
79 RUN cd pistache/build && \
82 RUN cp /usr/local/lib/x86_64-linux-gnu/libpistache* /usr/local/lib/
83 RUN cp /usr/local/lib/x86_64-linux-gnu/pkgconfig/libpistache.pc /usr/local/lib/pkgconfig
85 #install nlohmann json
86 RUN git clone https://github.com/nlohmann/json.git && cd json && cmake . && make install
88 #install json-schema-validator
89 RUN git clone https://github.com/pboettch/json-schema-validator.git && cd json-schema-validator &&mkdir build &&cd build && cmake .. && make install
92 COPY e2sm_kpm/ e2sm_kpm/
93 COPY e2sm_rc/ e2sm_rc/
94 # "COMPILING E2AP Wrapper"
96 gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \
97 gcc *.o -shared -o libe2apwrapper.so && \
98 cp libe2apwrapper.so /usr/local/lib/ && \
99 mkdir /usr/local/include/e2ap && \
100 cp wrapper.h headers/*.h /usr/local/include/e2ap && \
102 # "COMPILING E2SM-KPM Wrapper"
104 gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \
105 gcc *.o -shared -o libe2smkpmwrapper.so&& \
106 cp libe2smkpmwrapper.so /usr/local/lib/ && \
107 mkdir /usr/local/include/e2sm_kpm && \
108 cp wrapper.h headers/*.h /usr/local/include/e2sm_kpm && \
110 # "COMPILING E2SM-RC Wrapper"
112 gcc -c -fPIC -Iheaders/ lib/*.c wrapper.c && \
113 gcc *.o -shared -o libe2smrcwrapper.so&& \
114 cp libe2smrcwrapper.so /usr/local/lib/ && \
115 mkdir /usr/local/include/e2sm_rc && \
116 cp wrapper.h headers/*.h /usr/local/include/e2sm_rc && \
121 #COPY --from=buildenv /usr/local/lib /usr/local/lib/
122 #COPY --from=buildenv /usr/local/include /usr/local/include
123 #COPY --from=buildenv /usr/local/bin/rmr_probe /usr/local/bin/
124 #COPY --from=buildenv /playpen/bin /usr/local/bin/
125 #COPY --from=buildenv /playpen/assets /data
128 ENV PATH=/usr/local/bin:$PATH
129 ENV LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib
134 # if needed, set RMR vars
135 ENV RMR_SEED_RT=/playpen/routes.txt
136 #ENV RMR_RTG_SVC=rm-host:port
137 ENV RMR_SRC_ID=service-ricxapp-bouncer-xapp-rmr.ricxapp:4560
138 # ENV RMR_VCTL_FILE=/tmp/rmr.v
139 # RUN echo "2" >/tmp/rmr.v
140 #ARG DEBIAN_FRONTEND=noninteractive
141 RUN apt-get update && apt-get install -y gcc g++
145 RUN g++ -std=c++17 bouncer.cpp -o bouncer-xapp -lricxfcpp -lrmr_si -lpthread -lm -lboost_system -lcrypto -lssl -lcpprest -lpistache -lnlohmann_json_schema_validator -le2apwrapper -le2smrcwrapper -le2smrcwrapper
147 RUN cp bouncer-xapp /usr/local/bin/
148 CMD [ "/usr/local/bin/bouncer-xapp" ]