+###########################################################
+#
+###########################################################
+FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0 as submgrcore
+
+ARG GOVERSION=1.14
+
+ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/opt/go/${GOVERSION}/bin:/root/go/bin
+
+# Update CA certificates
+RUN apt update && apt install --reinstall -y \
+ ca-certificates \
+ && \
+ update-ca-certificates
+
+RUN apt update && apt install -y iputils-ping net-tools curl tcpdump gdb valgrind
+
+WORKDIR /tmp
+
+#RUN git clone https://github.com/nokia/asn1c.git
+#RUN cd asn1c && test -f configure || autoreconf -iv
+#RUN cd asn1c && ./configure
+#RUN cd asn1c && make
+##RUN cd asn1c && make check
+#RUN cd asn1c && make install
+
+#
+# Swagger
+#
+ARG SWAGGERVERSION=v0.23.0
+ARG SWAGGERURL=https://github.com/go-swagger/go-swagger/releases/download/${SWAGGERVERSION}/swagger_linux_amd64
+RUN wget --quiet ${SWAGGERURL} \
+ && mv swagger_linux_amd64 swagger \
+ && chmod +x swagger \
+ && mv swagger /usr/local/bin/
+
+#
+# GO DELVE
+#
+RUN export GOBIN=/usr/local/bin/ ; \
+ go get -u github.com/go-delve/delve/cmd/dlv \
+ && go install github.com/go-delve/delve/cmd/dlv
+
+
+#
+# RMR
+#
+ARG RMRVERSION=4.7.4
+ARG RMRLIBURL=https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_${RMRVERSION}_amd64.deb/download.deb
+ARG RMRDEVURL=https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_${RMRVERSION}_amd64.deb/download.deb
+RUN wget --content-disposition ${RMRLIBURL} && dpkg -i rmr_${RMRVERSION}_amd64.deb
+RUN wget --content-disposition ${RMRDEVURL} && dpkg -i rmr-dev_${RMRVERSION}_amd64.deb
+RUN rm -f rmr_${RMRVERSION}_amd64.deb rmr-dev_${RMRVERSION}_amd64.deb
+
+
+RUN mkdir /manifests/
+RUN echo "rmrlib ${RMRVERSION} ${RMRLIBURL}" >> /manifests/versions.txt
+RUN echo "rmrdev ${RMRVERSION} ${RMRDEVURL}" >> /manifests/versions.txt
+RUN echo "swagger ${SWAGGERVERSION} ${SWAGGERURL}" >> /manifests/versions.txt
+
+
+WORKDIR /opt/submgr
+
+###########################################################
+#
+###########################################################
+FROM submgrcore as submgre2apbuild
+
+
+ENV CFLAGS="-DASN_DISABLE_OER_SUPPORT"
+ENV CGO_CFLAGS="-DASN_DISABLE_OER_SUPPORT"
+
+COPY 3rdparty 3rdparty
+RUN cd 3rdparty/E2AP-v01.00.00 && \
+ gcc -c ${CFLAGS} -I. -g -fPIC *.c && \
+ gcc *.o -g -shared -o libe2ap.so && \
+ cp libe2ap.so /usr/local/lib/ && \
+ cp *.h /usr/local/include/ && \
+ ldconfig
+
+
+RUN echo "E2AP E2AP-v01.00.00" >> /manifests/versions.txt
+
+
+COPY e2ap e2ap
+RUN cd e2ap/libe2ap_wrapper && \
+ gcc -c ${CFLAGS} -g -fPIC *.c && \
+ gcc *.o -g -shared -o libe2ap_wrapper.so && \
+ cp libe2ap_wrapper.so /usr/local/lib/ && \
+ cp *.h /usr/local/include/ && \
+ ldconfig
+
+# unittest
+RUN cd e2ap && go test -v ./pkg/conv
+RUN cd e2ap && go test -v ./pkg/e2ap_wrapper
+
+# test formating (not important)
+RUN cd e2ap && test -z "$(gofmt -l pkg/conv/*.go)"
+RUN cd e2ap && test -z "$(gofmt -l pkg/e2ap_wrapper/*.go)"
+RUN cd e2ap && test -z "$(gofmt -l pkg/e2ap/*.go)"
+RUN cd e2ap && test -z "$(gofmt -l pkg/e2ap/e2ap_tests/*.go)"
+
+
+###########################################################
+#
+###########################################################
+FROM submgre2apbuild as submgrbuild
+#
+#
+#
+COPY go.mod go.mod
+RUN go mod download
+
+#
+#
+#
+RUN mkdir pkg
+COPY api api
+
+
+ARG RTMGRVERSION=cd7867c8f527f46fd8702b0b8d6b380a8e134bea
+
+RUN git clone "https://gerrit.o-ran-sc.org/r/ric-plt/rtmgr" \
+ && git -C "rtmgr" checkout $RTMGRVERSION \
+ && cp rtmgr/api/routing_manager.yaml api/ \
+ && rm -rf rtmgr
+
+
+RUN mkdir -p /root/go && \
+ swagger generate client -f api/routing_manager.yaml -t pkg/ -m rtmgr_models -c rtmgr_client
+
+
+RUN echo "rtmgrapi ${RTMGRVERSION} https://gerrit.o-ran-sc.org/r/ric-plt/rtmgr" >> /manifests/versions.txt
+
+#
+#
+#
+COPY pkg pkg
+COPY cmd cmd
+
+COPY go.sum go.sum
+RUN go mod tidy