diff options
| author | Monika Forstner <Monika_Forstner@mentor.com> | 2020-09-16 10:20:03 +0200 |
|---|---|---|
| committer | Monika Forstner <Monika_Forstner@mentor.com> | 2020-09-16 10:50:27 +0200 |
| commit | 2fb502b4bc23aa13fee1db3395b3cae5e34cc871 (patch) | |
| tree | d9cd2c64522f190500dc53291b4fbcf5100b9720 /devops/dockerfiles | |
| parent | 253d10aada6bf5cdfe307aaff55363f08194c85e (diff) | |
| download | node-state-manager-release_NSM_CommonAPI.tar.gz | |
NSM Release 3.0release_NSM_CommonAPI
Diffstat (limited to 'devops/dockerfiles')
| -rw-r--r-- | devops/dockerfiles/Dockerfile_genivi_nsm_dev | 163 | ||||
| -rw-r--r-- | devops/dockerfiles/README | 65 |
2 files changed, 228 insertions, 0 deletions
diff --git a/devops/dockerfiles/Dockerfile_genivi_nsm_dev b/devops/dockerfiles/Dockerfile_genivi_nsm_dev new file mode 100644 index 0000000..4a51e01 --- /dev/null +++ b/devops/dockerfiles/Dockerfile_genivi_nsm_dev @@ -0,0 +1,163 @@ +####################################################################################################################### +# +# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH +# +# Author: Vignesh_Rajendran@mentor.com +# +# Dockerfile to have an environment to build and run the NSM in +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# (!) The scope of this license statement is only the Dockerfile and not the container image +# +####################################################################################################################### + +FROM ubuntu:20.04 + +ARG PATH_GIT=/tmp/git + +ENV TZ="Europe/Berlin" +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +ENV container docker +ENV LC_ALL C +ENV DEBIAN_FRONTEND noninteractive +ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH + +RUN sed -i 's/# deb/deb/g' /etc/apt/sources.list + +RUN apt-get update + +RUN apt-get install -y \ + apt-utils \ + build-essential \ + curl \ + git \ + pkg-config \ + wget \ + libdbus-1-dev + +RUN apt-get install -y \ + asciidoc \ + doxygen \ + googletest \ + graphviz \ + libboost-all-dev \ + libglib2.0-dev \ + libgtest-dev \ + libsystemd-dev \ + openjdk-8-jdk \ + source-highlight \ + zlib1g-dev + +RUN apt-get install -y systemd systemd-sysv \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN cd /lib/systemd/system/sysinit.target.wants/ \ + && ls | grep -v systemd-tmpfiles-setup | xargs rm -f $1 + +RUN rm -f /lib/systemd/system/multi-user.target.wants/* \ + /etc/systemd/system/*.wants/* \ + /lib/systemd/system/local-fs.target.wants/* \ + /lib/systemd/system/sockets.target.wants/*udev* \ + /lib/systemd/system/sockets.target.wants/*initctl* \ + /lib/systemd/system/basic.target.wants/* \ + /lib/systemd/system/anaconda.target.wants/* \ + /lib/systemd/system/plymouth* \ + /lib/systemd/system/systemd-update-utmp* + +VOLUME [ "/sys/fs/cgroup" ] + +CMD ["/lib/systemd/systemd"] + +RUN useradd -ms /bin/bash genivi + +RUN mkdir -p $PATH_GIT + +WORKDIR $PATH_GIT +RUN wget http://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz +RUN tar xzf cmake-3.10.3.tar.gz +WORKDIR cmake-3.10.3 +RUN ./bootstrap +RUN make +RUN make install + +WORKDIR /usr/src/googletest/ +RUN mkdir build +WORKDIR /usr/src/googletest/build +RUN cmake .. +RUN make +RUN make install + +ARG GENIVI_VSOMEIP="vsomeip" +ARG GENIVI_VSOMEIP_VERSION="3.1.14.1" + +ARG GENIVI_DLT_DAEMON="dlt-daemon" +ARG GENIVI_DLT_DAEMON_VERSION="v2.18.4" + +ARG GENIVI_CAPICXX_CORE_RUNTIME="capicxx-core-runtime" +ARG GENIVI_CAPICXX_CORE_RUNTIME_VERSION="3.1.12.6" + +ARG GENIVI_CAPICXX_SOMEIP_RUNTIME="capicxx-someip-runtime" +ARG GENIVI_CAPICXX_SOMEIP_RUNTIME_VERSION="3.1.12.17" + +WORKDIR $PATH_GIT +RUN git clone https://github.com/GENIVI/$GENIVI_VSOMEIP.git +WORKDIR $PATH_GIT/$GENIVI_VSOMEIP +RUN git checkout -b $GENIVI_VSOMEIP_VERSION $GENIVI_VSOMEIP_VERSION +RUN mkdir build +WORKDIR $PATH_GIT/$GENIVI_VSOMEIP/build +RUN cmake -DENABLE_COMPAT=ON .. +RUN make +RUN make install + +WORKDIR $PATH_GIT +RUN git clone https://github.com/GENIVI/$GENIVI_DLT_DAEMON.git +WORKDIR $PATH_GIT/$GENIVI_DLT_DAEMON +RUN git checkout -b $GENIVI_DLT_DAEMON_VERSION $GENIVI_DLT_DAEMON_VERSION +RUN mkdir build +WORKDIR $PATH_GIT/$GENIVI_DLT_DAEMON/build +RUN cmake -D WITH_DLT_PKGCONFIG=ON -D WITH_SYSTEMD=ON -D WITH_SYSTEMD_WATCHDOG=ON -D WITH_SYSTEMD_JOURNAL=ON -D WITH_DLT_DBUS=ON .. +RUN make +RUN make install +RUN ldconfig + +WORKDIR $PATH_GIT +RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_CORE_RUNTIME.git +WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_RUNTIME +RUN git checkout -b $GENIVI_CAPICXX_CORE_RUNTIME_VERSION $GENIVI_CAPICXX_CORE_RUNTIME_VERSION +RUN mkdir build +WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_RUNTIME/build +RUN cmake .. +RUN make +RUN make install + +WORKDIR $PATH_GIT +RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_SOMEIP_RUNTIME.git +WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_RUNTIME +RUN git checkout -b $GENIVI_CAPICXX_SOMEIP_RUNTIME_VERSION $GENIVI_CAPICXX_SOMEIP_RUNTIME_VERSION +RUN mkdir build +WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_RUNTIME/build +RUN cmake -D USE_INSTALLED_COMMONAPI=ON .. +RUN make +RUN make install + +# WORKDIR $PATH_GIT +# RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_CORE_TOOLS.git +# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_TOOLS +# RUN git checkout -b $GENIVI_CAPICXX_CORE_TOOLS_VERSION $GENIVI_CAPICXX_CORE_TOOLS_VERSION +# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_CORE_TOOLS/org.genivi.commonapi.core.releng +# RUN mvn -Dtarget.id=org.genivi.commonapi.core.target clean verify + +# WORKDIR $PATH_GIT +# RUN git clone https://github.com/GENIVI/$GENIVI_CAPICXX_SOMEIP_TOOLS.git +# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_TOOLS +# RUN git checkout -b $GENIVI_CAPICXX_SOMEIP_TOOLS_VERSION $GENIVI_CAPICXX_SOMEIP_TOOLS_VERSION +# WORKDIR $PATH_GIT/$GENIVI_CAPICXX_SOMEIP_TOOLS/org.genivi.commonapi.someip.releng +# RUN mvn -DCOREPATH=.. -Dtarget.id=org.genivi.commonapi.someip.target clean verify + +# RUN rm -rf $PATH_GIT + +WORKDIR /home diff --git a/devops/dockerfiles/README b/devops/dockerfiles/README new file mode 100644 index 0000000..9cea47d --- /dev/null +++ b/devops/dockerfiles/README @@ -0,0 +1,65 @@ +To build the docker image on your local PC, clone this project and navigate to this folder. Then run + + docker build --tag <docker_image_name> --file Dockerfile_genivi_nsm_dev . + +The image <docker_image_name> will be created and stored in the docker registry on your local PC thus. + +Let's assume there is a <working> folder on your local PC (on the full path <path_working>). +In this folder you should clone node state manager. + +- clone "node-state-manager" + +To run a docker container with the generated <docker_image_name> image, and to pull your <working> folder into the docker container in order to be able to work, run + + docker run -it --name <docker_container_name> --tmpfs /tmp --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v <path_working>:/home/<working> <docker_image_name> + +To exit the container, just type + + exit + +To run the same container again and continue your work, run + + docker exec -it <docker_container_name> bash + +A few basic useful docker commands + + docker images + docker container ls -a + docker rm <container_to_remove> + docker rmi <image_to_remove> + + +--- + +To work on the "node-state-manager", run/start the container. + +Before you can compile the NSM, you need to generate and build the necessary CommonAPI interfaces. +The interfaces and a CMake project for generating and building them can be found in NodeStateAccess/interfaces/. +(Note that this requires the CommonAPI and SomeIP code generators. You will need to clone the commonapi-core-tools and +commonapi-someip-tools repositories from GENIVI and build them from there. Find instructions on how to do this in their +respective READMEs.) + +To build "node-state-manager" with cmake: + + cd /home/<working>/node-state-manager + git checkout -b <right_branch> + mkdir build + cd build + cmake .. # disable/enable options according to your needs + make + make install + + # To run tests + ctest + + # To run Coverage + ctest -T Test -T Coverage + +--- + +This Dockerfile is developed with + + $ docker --version + Docker version 19.03.12, build 48a66213fe + +The parameters presented above may vary according to the installed docker version on your local PC. |
