From ccf89a5a24306e484c209d3bda8c04f84bfac77a Mon Sep 17 00:00:00 2001 From: Yi Wang Date: Sun, 4 Dec 2016 17:56:43 -0800 Subject: [PATCH] Make browserable C++ source code into HTMLs --- .../build_and_install/docker_install.rst | 26 +++++++++++++++++-- paddle/scripts/docker/Dockerfile | 10 ++++--- paddle/scripts/docker/Dockerfile.gpu | 10 ++++--- paddle/scripts/docker/build.sh | 22 +++++++++++++++- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/doc/getstarted/build_and_install/docker_install.rst b/doc/getstarted/build_and_install/docker_install.rst index fefa337f83..5abb3b9a3f 100644 --- a/doc/getstarted/build_and_install/docker_install.rst +++ b/doc/getstarted/build_and_install/docker_install.rst @@ -19,8 +19,8 @@ automatically runs the following commands: .. code-block:: base - docker build -t paddle:cpu-noavx -f paddle/scripts/docker/Dockerfile . - docker build -t paddle:gpu-noavx -f paddle/scripts/docker/Dockerfile.gpu . + docker build -t paddle:cpu -f paddle/scripts/docker/Dockerfile . + docker build -t paddle:gpu -f paddle/scripts/docker/Dockerfile.gpu . To run the CPU-only image as an interactive container: @@ -81,3 +81,25 @@ source code: cd Paddle docker build --build-arg WITH_AVX=OFF -t paddle:cpu-noavx -f paddle/scripts/docker/Dockerfile . docker build --build-arg WITH_AVX=OFF -t paddle:gpu-noavx -f paddle/scripts/docker/Dockerfile.gpu . + + +Documentation +------------- + +Paddle Docker images include an HTML version of C++ source code +generated using `woboq code browser +`_. This makes it easy +for users to browse and understand the C++ source code. + +As long as we give the Paddle Docker container a name, we can run an +additional nginx Docker container to serve the volume from the Paddle +container: + +.. code-block:: bash + + docker run -d --name paddle-cpu-doc paddle:cpu + docker run -d --volumes-from paddle-cpu-doc -p 8088:80 nginx + + +Then we can direct our Web browser to the HTML version of source code +at http://localhost:8088/paddle/ diff --git a/paddle/scripts/docker/Dockerfile b/paddle/scripts/docker/Dockerfile index be077dfc00..2983b18000 100644 --- a/paddle/scripts/docker/Dockerfile +++ b/paddle/scripts/docker/Dockerfile @@ -1,13 +1,14 @@ FROM ubuntu:14.04 MAINTAINER PaddlePaddle Authors -RUN apt-get update && \ - apt-get install -y cmake libprotobuf-dev protobuf-compiler git \ +RUN apt-get update \ + && apt-get install -y cmake libprotobuf-dev protobuf-compiler git \ libgoogle-glog-dev libgflags-dev libatlas-dev libatlas3-base g++ m4 python-pip \ python-protobuf python-numpy python-dev swig openssh-server \ wget unzip python-matplotlib tar xz-utils bzip2 gzip coreutils \ - sed grep graphviz libjpeg-dev zlib1g-dev doxygen && \ - apt-get clean -y + sed grep graphviz libjpeg-dev zlib1g-dev doxygen \ + clang-3.8 llvm-3.8 libclang-3.8-dev \ + && apt-get clean -y RUN pip install BeautifulSoup docopt PyYAML pillow \ 'sphinx>=1.4.0' sphinx_rtd_theme breathe recommonmark @@ -18,6 +19,7 @@ ENV WITH_GPU=OFF RUN mkdir /paddle COPY . /paddle/ RUN /paddle/paddle/scripts/docker/build.sh +VOLUME ["/usr/share/nginx/html/data", "/usr/share/nginx/html/paddle"] RUN echo 'export LD_LIBRARY_PATH=/usr/lib64:${LD_LIBRARY_PATH}' >> /etc/profile RUN pip install /usr/local/opt/paddle/share/wheels/*.whl diff --git a/paddle/scripts/docker/Dockerfile.gpu b/paddle/scripts/docker/Dockerfile.gpu index 292b4dc66b..ea6a8de725 100644 --- a/paddle/scripts/docker/Dockerfile.gpu +++ b/paddle/scripts/docker/Dockerfile.gpu @@ -1,13 +1,14 @@ FROM nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04 MAINTAINER PaddlePaddle Authors -RUN apt-get update && \ - apt-get install -y cmake libprotobuf-dev protobuf-compiler git \ +RUN apt-get update \ + && apt-get install -y cmake libprotobuf-dev protobuf-compiler git \ libgoogle-glog-dev libgflags-dev libatlas-dev libatlas3-base g++ m4 python-pip \ python-protobuf python-numpy python-dev swig openssh-server \ wget unzip python-matplotlib tar xz-utils bzip2 gzip coreutils \ - sed grep graphviz libjpeg-dev zlib1g-dev doxygen && \ - apt-get clean -y + sed grep graphviz libjpeg-dev zlib1g-dev doxygen \ + clang-3.8 llvm-3.8 libclang-3.8-dev \ + && apt-get clean -y RUN pip install BeautifulSoup docopt PyYAML pillow \ 'sphinx>=1.4.0' sphinx_rtd_theme breathe recommonmark @@ -18,6 +19,7 @@ ENV WITH_GPU=ON RUN mkdir /paddle COPY . /paddle/ RUN /paddle/paddle/scripts/docker/build.sh +VOLUME ["/usr/share/nginx/html/data", "/usr/share/nginx/html/paddle"] RUN echo 'export LD_LIBRARY_PATH=/usr/lib64:${LD_LIBRARY_PATH}' >> /etc/profile RUN pip install /usr/local/opt/paddle/share/wheels/*.whl diff --git a/paddle/scripts/docker/build.sh b/paddle/scripts/docker/build.sh index 8e2e26b6ba..ca3f1c3f18 100755 --- a/paddle/scripts/docker/build.sh +++ b/paddle/scripts/docker/build.sh @@ -20,8 +20,28 @@ cmake .. \ -DWITH_AVX=${WITH_AVX} \ -DWITH_SWIG_PY=ON \ -DCUDNN_ROOT=/usr/ \ - -DWITH_STYLE_CHECK=OFF + -DWITH_STYLE_CHECK=OFF \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON make -j `nproc` make install +# Install woboq_codebrowser. +git clone https://github.com/woboq/woboq_codebrowser /woboq +cd /woboq +cmake -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-3.8 \ + -DCMAKE_BUILD_TYPE=Release \ + . +make + +export WOBOQ_OUT=/usr/share/nginx/html/paddle +export BUILD_DIR=/paddle/build +mkdir -p $WOBOQ_OUT +cp -rv /woboq/data $WOBOQ_OUT/../data +/woboq/generator/codebrowser_generator \ + -b /paddle/build \ + -a \ + -o $WOBOQ_OUT \ + -p paddle:/paddle +/woboq/indexgenerator/codebrowser_indexgenerator $WOBOQ_OUT + trap : 0 -- GitLab