From 9df768b0f3119e9c54e8db7008a5e5d19d63ced5 Mon Sep 17 00:00:00 2001 From: Prasanna Bhat Date: Tue, 12 May 2020 00:44:17 +0530 Subject: [PATCH] Fix PR comments Signed-off-by: Prasanna Bhat --- scripts/build.sh | 41 +++++++++++++++++++++++++++-- scripts/docker/DockerfileCycloneDds | 2 +- scripts/docker/README.md | 20 ++++++++------ scripts/docker/build_cyclonedds.sh | 2 +- 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 60b0b63..879e497 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -6,9 +6,46 @@ WORKSPACE=$(pwd) echo "WORKSPACE is $WORKSPACE" CYCLONEDDS_INSTALL_PREFIX=$WORKSPACE/build/install/ +CLEAN_BUILD=false -rm -rf build/ -mkdir build +usage() { + echo "" + echo "Helper script to build cyclonedds" + echo "Usage : " + echo "/scripts/build.sh [options]" + echo "Supported options are " + echo "clean : remove build folder (Default : keep build folder)" + echo "" +} + +parse_args() { + for arg in "$@" + do + case $arg in + -h | --help) + usage + exit 0 + ;; + clean) + CLEAN_BUILD=true + ;; + *) + echo "ERROR : unknown parameter $arg" + usage + exit 1 + ;; + esac + done +} + +parse_args $@ + +if [ $CLEAN_BUILD == true ] +then + rm -rf build/ +fi + +mkdir -p build cd build cmake -DCMAKE_INSTALL_PREFIX=$CYCLONEDDS_INSTALL_PREFIX -DBUILD_IDLC=ON .. cmake --build . diff --git a/scripts/docker/DockerfileCycloneDds b/scripts/docker/DockerfileCycloneDds index 1881c04..3906a5d 100644 --- a/scripts/docker/DockerfileCycloneDds +++ b/scripts/docker/DockerfileCycloneDds @@ -5,4 +5,4 @@ ADD . /cyclonedds WORKDIR /cyclonedds -RUN ./scripts/build.sh \ No newline at end of file +RUN ./scripts/build.sh clean \ No newline at end of file diff --git a/scripts/docker/README.md b/scripts/docker/README.md index 1fda635..ee6f1ba 100644 --- a/scripts/docker/README.md +++ b/scripts/docker/README.md @@ -1,7 +1,7 @@ # Overview This contains helper scripts to build & run cyclonedds core & example applications in docker. -Additionally you can also build a docker image with pre-built cyclonedds examples. This could be useful in quikly trying the examples (both IPC & network communication). +Additionally you can also build a docker image with pre-built cyclonedds examples. This could be useful in quickly trying the examples (both IPC & network communication). # Bulid docker image There are two docker images you can build. @@ -27,7 +27,8 @@ The following images are supported. `ubuntu` : Same as **ubuntu:cyclonedds** , mentioned above. `cyclonedds` : Same as **cyclonedds:latest**, mentioned above. You can run the script with `-h` option to display usage information. -- Build cyclonedds core & examples (if you are using **ubuntu:cyclonedds**) +**NOTE** : *cyclonedds:latest* depends on image *ubuntu:cyclonedds*. You need to build *ubuntu:cyclonedds* first, if you want to use *cyclonedds:latest*. +- Build cyclonedds core & examples (if you are using **ubuntu:cyclonedds**) Use the helper script `./scripts/docker/build_cyclonedds.sh` to build using the currently checked out revision. **NOTE** : You need to run this script from the root of the project. @@ -39,14 +40,17 @@ Once you have built the cyclonedds , you are ready to run the examples inside do Let's do that ! ## Run examples inside the same container (uses IPC) -- Launch docker container, from the root of the project -`docker run --name cyclonedds -it -v $(pwd):/cyclonedds --workdir /cyclonedds cyclonedds:latest /bin/bash` -This will open terminal connected to docker @ root of the project. +- Launch docker container, from the root of the project + +``` +docker run --name cyclonedds -it --workdir /cyclonedds/build/bin cyclonedds:latest /bin/bash +``` +This will open terminal connected to docker @ bin of the project, which contains sample applications. It will look something like this ``` -root@22ff409a33e1:/cyclonedds# +root@22ff409a33e1:/cyclonedds/build/bin# ``` -- Navigate to `/build/bin` to run the example applications. +- From here you can run the example applications. - To run another terminal , connected to same docker container, use the following command. ``` docker exec -it cyclonedds /bin/bash @@ -57,7 +61,7 @@ Run the partner example here. This will establish communication over IPC channel ## Run examples in different containers (uses docker networking) - Follow the same steps as in the previous section , instead connecting to existing docker container create a new docker container. e.g. -`docker run --name cyclonedds1 -it -v $(pwd):/cyclonedds --workdir /cyclonedds cyclonedds:latest /bin/bash` +`docker run --name cyclonedds1 -it --workdir /cyclonedds/build/bin cyclonedds:latest /bin/bash` **NOTE** : You need to run this script from the root of the project. At this point you can inspect the traffic using wireshark. Open docker network interface (`docker0` on my system) in wireshark. diff --git a/scripts/docker/build_cyclonedds.sh b/scripts/docker/build_cyclonedds.sh index 9297550..74e425f 100755 --- a/scripts/docker/build_cyclonedds.sh +++ b/scripts/docker/build_cyclonedds.sh @@ -9,7 +9,7 @@ CONTAINER_NAME="cyclonedds" echo "WORKSPACE is $WORKSPACE" -docker run -it --rm -v $WORKSPACE/:/cyclonedds --workdir /cyclonedds $IMAGE_NAME /bin/bash -c "./scripts/build.sh" +docker run -it --rm -v $WORKSPACE/:/cyclonedds --workdir /cyclonedds $IMAGE_NAME /bin/bash -c "./scripts/build.sh clean" # Launch the docker after build docker run --name $CONTAINER_NAME -it -v $WORKSPACE/:/cyclonedds --workdir /cyclonedds $IMAGE_NAME /bin/bash # If you want to connect to the above docker to run cyclonedds examples (multiple apps in separate terminals) , use the below command