Unified dockerfile (#5925)
author오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Mon, 29 Jul 2019 01:42:29 +0000 (10:42 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 29 Jul 2019 01:42:29 +0000 (10:42 +0900)
Merge infra/nncc/Dockerfile, infra/nnfw/docker/Dockerfile, and infra/nnfw/docker/Dockerfile_tizen into infra/docker/Dockerfile
- Base ubuntu version: 16.04
- Use apt-get
- Native/cross gcc/g++ version: 6.x
- Update nncc/nnfw docker build documents
- Move infra/nnfw/command/build-docker command into infra/command and change name to build-docker-image

Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
docs/nncc/getting_started.md
docs/nnfw/howto/HowToUseDockerImage.md
infra/command/build-docker-image [moved from infra/nnfw/command/build-docker with 58% similarity]
infra/docker/Dockerfile [new file with mode: 0644]
infra/nncc/Dockerfile [deleted file]
infra/nnfw/docker/Dockerfile [deleted file]
infra/nnfw/docker/Dockerfile_tizen [deleted file]

index 69076ee..8f01bd2 100644 (file)
@@ -10,20 +10,20 @@ _nncc_ provides ``Dockerfile`` in order to make it easy to setup development env
 
 One may build ``nncc`` docker image with the following command:
 ```
-nncc$ cat infra/nncc/Dockerfile | docker build -t nncc -
+nncc$ cat infra/docker/Dockerfile | docker build -t nncc -
 ...
 ```
 
 By default, this ``Dockerfile`` uses "archive.ubuntu.com" which may be quite slow. One may use mirror site via ``UBUNTU_MIRROR`` variable.
 For example, one may enable the use of ``kr.archive.ubuntu.com`` via the following command
 ```
-nncc$ cat infra/nncc/Dockerfile | docker build --build-arg UBUNTU_MIRROR="kr.archive.ubuntu.com" -t nncc -
+nncc$ cat infra/docker/Dockerfile | docker build --build-arg UBUNTU_MIRROR="kr.archive.ubuntu.com" -t nncc -
 ...
 ```
 
 One who works behind proxy should provide proxy configuration via the following command:
 ```
-nncc$ cat infra/nncc/Dockerfile | docker build --build-arg HTTP_PROXY=<HTTP proxy address> --build-arg HTTPS_PROXY=<HTTPS proxy address> -t nncc -
+nncc$ cat infra/docker/Dockerfile | docker build --build-arg HTTP_PROXY=<HTTP proxy address> --build-arg HTTPS_PROXY=<HTTPS proxy address> -t nncc -
 ...
 ```
 One may use simplified command if ``HTTP_PROXY`` and ``HTTPS_PROXY`` environment variables are already set:
@@ -33,13 +33,13 @@ nncc$ export
 declare -x HTTP_PROXY=...
 declare -x HTTPS_PROXY=...
 ...
-nncc$ cat infra/nncc/Dockerfile | docker build --build-arg HTTP_PROXY --build-arg HTTPS_PROXY -t nncc -
+nncc$ cat infra/docker/Dockerfile | docker build --build-arg HTTP_PROXY --build-arg HTTPS_PROXY -t nncc -
 ...
 ```
 
 Note that these configurations are orthogonal to each other. One may freely combine these options as follows:
 ```
-nncc$ cat infra/nncc/Dockerfile | docker build --build-arg HTTP_PROXY --build-arg HTTPS_PROXY --build-arg UBUNTU_MIRROR="kr.archive.ubuntu.com" -t nncc -
+nncc$ cat infra/docker/Dockerfile | docker build --build-arg HTTP_PROXY --build-arg HTTPS_PROXY --build-arg UBUNTU_MIRROR="kr.archive.ubuntu.com" -t nncc -
 ```
 
 One may easily build _nncc_ with the following command once ``nncc`` docker image is built.
index c49e3de..04bfdae 100644 (file)
@@ -2,7 +2,7 @@
 
 We have a docker image to build `nnfw` repo.
 
-This docker image is built from https://github.sec.samsung.net/STAR/nnfw/blob/master/scripts/docker/Dockerfile and based on Ubuntu 16.04.
+This docker image is built from https://github.sec.samsung.net/STAR/nnfw/blob/master/infra/docker/Dockerfile and based on Ubuntu 16.04.
 And prebuilt docker image is available from Samsung private docker registry.
 
 This document describes how to use prebuilt docker image when developing `nnfw`.
@@ -125,16 +125,6 @@ $ cd nnfw
 $ ./nnfw build-docker --network=host --no-cache
 ```
 
-If you want to build docker image for tizen build, use `--tizen` option
-
-```
-```
-$ cd nnfw
-$ ./nnfw build-docker --tizen
-```
-```
-
-
 ## Use docker image to build `nnfw`
 Three different targets for `nnfw` can be built using docker image.
 
similarity index 58%
rename from infra/nnfw/command/build-docker
rename to infra/command/build-docker-image
index f78a219..ebbc9e5 100644 (file)
@@ -17,38 +17,30 @@ DOCKER_BUILD_ARGS=()
 # Set default docker image name, tag
 for i in "$@"
 do
-  case $i in
+  case ${i} in
     -h|--help|help)
       Usage
       exit 1
       ;;
-    --tizen)
-      DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-nnfw_docker_tizen}
-      DOCKER_FILE_RPATH="docker/Dockerfile_tizen"
-      ;;
   esac
 done
 
-import "image_name.configuration"
-DOCKER_BUILD_ARGS+="-t ${DOCKER_IMAGE_NAME}"
+DOCKER_BUILD_ARGS+="-t ${DOCKER_IMAGE_NAME:-nnas}"
 
 # Argument for docker build commands
 for i in "$@"
 do
-  case $i in
+  case ${i} in
     -h|--help|help)
       # Already handled argument
       ;;
-    --tizen)
-      # Already handled argument
-      ;;
     *)
-      DOCKER_BUILD_ARGS+=($i)
+      DOCKER_BUILD_ARGS+=(${i})
       ;;
   esac
 done
 
-docker build --build-arg http_proxy="$http_proxy" \
-  --build-arg https_proxy="$https_proxy" \
+docker build --build-arg http_proxy="${http_proxy}" \
+  --build-arg https_proxy="${https_proxy}" \
   ${DOCKER_BUILD_ARGS[@]} \
-  - < $NNFW_SCRIPT_PATH/$DOCKER_FILE_RPATH
+  - < ${NNAS_SCRIPT_PATH}/${DOCKER_FILE_RPATH}
diff --git a/infra/docker/Dockerfile b/infra/docker/Dockerfile
new file mode 100644 (file)
index 0000000..5eb1a5b
--- /dev/null
@@ -0,0 +1,65 @@
+FROM ubuntu:16.04
+
+ARG UBUNTU_MIRROR
+ENV http_proxy $http_proxy
+ENV https_proxy $https_proxy
+
+RUN if [ -n "$http_proxy" ] ; then echo "Acquire::http::proxy \"${http_proxy}\";" >> /etc/apt/apt.conf ; fi
+RUN if [ -n "$https_proxy" ] ; then echo "Acquire::https::proxy \"${https_proxy}\";" >> /etc/apt/apt.conf ; fi
+RUN if [ -n "$UBUNTU_MIRROR" ] ; then sed "s/archive.ubuntu.com/${UBUNTU_MIRROR}/g" -i /etc/apt/sources.list ; fi
+
+# Install 'add-apt-repository'
+RUN apt-get update && apt-get -qqy install software-properties-common
+
+# Build tool
+RUN apt-get update && apt-get -qqy install build-essential cmake scons git lcov
+
+# Install extra dependencies (Caffe, nnkit)
+RUN apt-get update && apt-get -qqy install libboost-all-dev libgflags-dev libgoogle-glog-dev libatlas-base-dev libhdf5-dev
+
+# Install protocol buffer
+RUN apt-get update && apt-get -qqy install libprotobuf-dev protobuf-compiler
+
+# Additonal tools
+RUN apt-get update && apt-get -qqy install doxygen graphviz wget unzip clang-format-3.9 python3 python-pip hdf5-tools
+RUN pip install yapf==0.22.0
+
+# Install google test (source)
+RUN apt-get update && apt-get -qqy install libgtest-dev
+
+###
+### NOTE: Don't add new package install using apt-get or pip below this line
+###
+
+# Install native build tool gcc version 6.x
+RUN add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get update && apt-get -qqy install gcc-6 g++-6
+RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && update-alternatives --config gcc
+
+# Install cross build tool gcc version 6.x
+RUN wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz -O gcc-hardfp.tar.xz -nv
+RUN wget https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabi/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabi.tar.xz -O gcc-softfp.tar.xz -nv
+RUN tar -xf gcc-hardfp.tar.xz -C /opt/ && rm -rf gcc-hardfp.tar.xz
+RUN tar -xf gcc-softfp.tar.xz -C /opt/ && rm -rf gcc-softfp.tar.xz
+ENV PATH "/opt/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabi/bin:/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin:$PATH"
+
+###
+### NOTE: Don't add build & install process using installed buildtool above this line
+###
+
+# Build and install google test static libraries
+WORKDIR /root/gtest
+RUN cmake /usr/src/gtest
+RUN make
+RUN mv *.a /usr/lib
+WORKDIR /root
+RUN rm -rf gtest
+
+# Install gbs & sdb
+RUN echo 'deb [trusted=yes] http://download.tizen.org/tools/latest-release/Ubuntu_16.04/ /' | cat >> /etc/apt/sources.list
+RUN apt-get update && apt-get -qqy install gbs
+RUN wget http://download.tizen.org/sdk/tizenstudio/official/binary/sdb_3.1.4_ubuntu-64.zip -O sdb.zip
+RUN unzip -d tmp sdb.zip && rm sdb.zip
+RUN cp tmp/data/tools/sdb /usr/bin/. && rm -rf tmp
+
+# Clean archives (to reduce image size)
+RUN apt-get clean -y
diff --git a/infra/nncc/Dockerfile b/infra/nncc/Dockerfile
deleted file mode 100644 (file)
index 7da738d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-FROM ubuntu:14.04
-
-ARG HTTP_PROXY
-ARG HTTPS_PROXY
-ARG UBUNTU_MIRROR
-
-RUN if [ -n "$HTTP_PROXY" ] ; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf ; fi
-RUN if [ -n "$HTTPS_PROXY" ] ; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf ; fi
-RUN if [ -n "$UBUNTU_MIRROR" ] ; then sed "s/archive.ubuntu.com/${UBUNTU_MIRROR}/g" -i /etc/apt/sources.list ; fi
-
-RUN apt update
-
-# Install 'add-apt-repository'
-RUN apt install -y software-properties-common
-
-# Add CMake 3.2 PPA
-RUN add-apt-repository -y ppa:george-edison55/cmake-3.x
-RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
-RUN apt update
-
-# Install base dependencies
-RUN apt install -y make cmake
-
-# Update gcc version
-RUN apt install -y gcc-5 g++-5
-RUN update-alternatives \
-             --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 \
-             --slave /usr/bin/g++ g++ /usr/bin/g++-5
-RUN update-alternatives --config gcc
-
-# Install google test (source)
-RUN apt install -y libgtest-dev
-
-# Build and install google test static libraries
-WORKDIR /root/gtest
-RUN cmake /usr/src/gtest
-RUN make
-RUN mv *.a /usr/lib
-WORKDIR /root
-RUN rm -rf gtest
-
-# Install protocol buffer
-RUN apt install -y libprotobuf-dev protobuf-compiler
-
-# Install HDF5 tools for testing
-RUN apt install -y hdf5-tools
-
-# Install extra dependencies
-RUN apt install -y libgflags-dev # Caffe
-RUN apt install -y libgoogle-glog-dev # Caffe
-RUN apt install -y libhdf5-dev # Caffe, nnkit
-RUN apt install -y libboost-system-dev # Caffe
-RUN apt install -y libboost-filesystem-dev # Caffe
-RUN apt install -y libboost-thread-dev # Caffe
-RUN apt install -y libatlas-base-dev # Caffe
-
-# Clean archives (to reduce image size)
-RUN apt-get clean -y
diff --git a/infra/nnfw/docker/Dockerfile b/infra/nnfw/docker/Dockerfile
deleted file mode 100644 (file)
index 5da7549..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-FROM ubuntu:16.04
-
-ENV http_proxy $http_proxy
-ENV https_proxy $https_proxy
-
-RUN apt-get update && apt-get --yes --force-yes install build-essential
-RUN apt-get update && apt-get --yes --force-yes install scons cmake
-RUN apt-get update && apt-get --yes --force-yes install libboost-all-dev
-RUN apt-get update && apt-get --yes --force-yes install git
-RUN apt-get update && apt-get --yes --force-yes install lcov
-RUN apt-get update && apt-get --yes --force-yes install clang-format-3.9 python-pip
-RUN pip install yapf==0.22.0
-RUN apt-get update && apt-get --yes --force-yes install doxygen graphviz
-RUN apt-get update && apt-get --yes --force-yes install wget unzip
-# Install cross build tool gcc version 6.x
-RUN wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz -O gcc-hardfp.tar.xz -nv
-RUN wget https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabi/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabi.tar.xz -O gcc-softfp.tar.xz -nv
-RUN tar -xf gcc-hardfp.tar.xz -C /opt/ && rm -rf gcc-hardfp.tar.xz
-RUN tar -xf gcc-softfp.tar.xz -C /opt/ && rm -rf gcc-softfp.tar.xz
-ENV PATH "/opt/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabi/bin:/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin:$PATH"
-RUN apt-get update && apt-get --yes --force-yes install python3
-# Install native build tool gcc version 6.x
-RUN apt-get update && apt-get --yes --force-yes install software-properties-common
-RUN add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get update && apt-get --yes --force-yes install gcc-6 g++-6
-RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && update-alternatives --config gcc
diff --git a/infra/nnfw/docker/Dockerfile_tizen b/infra/nnfw/docker/Dockerfile_tizen
deleted file mode 100644 (file)
index d56cf78..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM ubuntu:16.04
-
-ENV http_proxy $http_proxy
-ENV https_proxy $https_proxy
-
-RUN echo 'deb [trusted=yes] http://download.tizen.org/tools/latest-release/Ubuntu_16.04/ /' | cat >> /etc/apt/sources.list
-
-RUN apt-get update && apt-get --yes --force-yes install gbs
-
-RUN apt-get --yes --force-yes install wget unzip
-RUN wget http://download.tizen.org/sdk/tizenstudio/official/binary/sdb_3.1.4_ubuntu-64.zip -O sdb.zip
-RUN unzip -d tmp sdb.zip && rm sdb.zip
-RUN cp tmp/data/tools/sdb /usr/bin/. && rm -rf tmp 
\ No newline at end of file