[Sound-open-firmware] [PATCH V2 2/2] scripts: docker: Simplify docker build

Pan, Xiuli xiuli.pan at linux.intel.com
Tue Jun 5 12:46:51 CEST 2018



On 6/5/2018 18:43, Xiuli Pan wrote:
> From: Pan Xiuli <xiuli.pan at linux.intel.com>
>
> Use Ubuntu 18.04 as base, gcc-7 is the default version.
>
> SOFT is no longer needed to be installed on host builder machine.
> rimage build is included in the build all scripts. No longer build the
> rimage for the first time.
>
> Remove some unused folder.
>
> Merge some build command to reduce docker image size.
docker image size reduce to 500MB+ with this patch set.

> Set the docker user sudo need no passwd.
>
> Signed-off-by: Pan Xiuli <xiuli.pan at linux.intel.com>
> ---
> V2: Remove some duplicate apt install object
> Add some new functions
> ---
>   scripts/docker_build/Dockerfile | 99 +++++++++++++----------------------------
>   1 file changed, 32 insertions(+), 67 deletions(-)
>
> diff --git a/scripts/docker_build/Dockerfile b/scripts/docker_build/Dockerfile
> index 8dede3c..66338cc 100644
> --- a/scripts/docker_build/Dockerfile
> +++ b/scripts/docker_build/Dockerfile
> @@ -14,7 +14,7 @@
>   # docker run -it  -v <insert sof dir here>:/home/sof/work/sof.git -v <soft git dir>:/home/sof/work/soft.git --user `id -u` sof ./incremental.sh
>   #
>   
> -FROM ubuntu:16.04
> +FROM ubuntu:18.04
>   ARG UID=1000
>   
>   # Set up proxy from host
> @@ -36,10 +36,8 @@ RUN apt-get -y update && \
>   		gperf \
>   		help2man \
>   		libncurses5-dev \
> -		libncurses5-dev \
>   		libssl-dev \
>   		libtool \
> -		libtool \
>   		libtool-bin \
>   		pkg-config \
>   		software-properties-common \
> @@ -48,13 +46,6 @@ RUN apt-get -y update && \
>   		udev \
>   		wget
>   
> -# Use gcc/g++ 7.
> -RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y
> -RUN apt-get -y update
> -RUN apt-get install -y gcc-7 g++-7
> -RUN apt-get clean
> -RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
> -
>   # Use ToT alsa utils for the latest topology patches.
>   RUN mkdir -p /root/alsa-build && cd /root/alsa-build && \
>   	if [ "x$http_proxy" = "x" ]; then \
> @@ -68,71 +59,45 @@ cd /root/alsa-build/alsa-lib && ./gitcompile &&  make install && \
>   cd /root/alsa-build/alsa-utils && ./gitcompile &&  make install && \
>   cd /root/ && rm -rf alsa-build
>   
> -RUN useradd --create-home -d /home/sof -u $UID -G sudo sof
> -RUN echo "sof:test0000" | chpasswd
> -RUN adduser sof sudo
> +# Set up sof user
> +RUN useradd --create-home -d /home/sof -u $UID -G sudo sof && \
> +echo "sof:test0000" | chpasswd && adduser sof sudo && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
>   ENV HOME /home/sof
>   
> -# pull all sof repositories that are needed
> -USER sof
> -RUN git clone git://git.alsa-project.org/sound-open-firmware.git /home/sof/sof.git
> -RUN git clone git://git.alsa-project.org/sound-open-firmware-tools.git /home/sof/soft.git
> -RUN git clone https://github.com/01org/osadsp-crosstool-ng.git /home/sof/ct-ng.git
> -RUN git clone https://github.com/jcmvbkbc/newlib-xtensa.git /home/sof/newlib-xtensa.git
> -
> -USER sof
> -RUN mkdir -p /home/sof/bin
> -WORKDIR /home/sof/soft.git
> -RUN ./autogen.sh
> -RUN ./configure --prefix=/home/sof/bin
> -RUN make
> -RUN make install
> -
> -ENV PATH="/home/sof/bin/bin:${PATH}"
> -
> +# build cross compiler
>   USER sof
> -WORKDIR /home/sof/ct-ng.git
> -RUN for arch in byt hsw bxt cnl; do \
> -	./bootstrap && \
> -	./configure --prefix=`pwd` && \
> -	make && \
> -	make install && \
> -	./ct-ng xtensa-${arch}-elf && \
> -	./ct-ng build && \
> -	make distclean; \
> -done
> -
> -ENV PATH="/home/sof/ct-ng.git/builds/xtensa-byt-elf/bin:${PATH}"
> -ENV PATH="/home/sof/ct-ng.git/builds/xtensa-hsw-elf/bin:${PATH}"
> -ENV PATH="/home/sof/ct-ng.git/builds/xtensa-bxt-elf/bin:${PATH}"
> -ENV PATH="/home/sof/ct-ng.git/builds/xtensa-cnl-elf/bin:${PATH}"
>   
> -USER sof
> -WORKDIR /home/sof/newlib-xtensa.git
> -RUN git checkout -b xtensa origin/xtensa
> -RUN for arch in byt hsw bxt cnl; do \
> -	./configure --target=xtensa-${arch}-elf \
> +RUN cd /home/sof && git clone https://github.com/01org/osadsp-crosstool-ng.git /home/sof/ct-ng.git && \
> +cd ct-ng.git && ./bootstrap && ./configure --prefix=`pwd` && \
> +	make && make install && \
> +	for arch in byt hsw bxt cnl; do \
> +		./ct-ng xtensa-${arch}-elf && \
> +		./ct-ng build ; \
> +	done && \
> +	mkdir -p /home/sof/work/ && \
> +	cp -r builds/xtensa-*-elf /home/sof/work/ && cd /home/sof/ && sudo rm -rf ct-ng.git
> +
> +ENV PATH="/home/sof/work/xtensa-byt-elf/bin:${PATH}"
> +ENV PATH="/home/sof/work/xtensa-hsw-elf/bin:${PATH}"
> +ENV PATH="/home/sof/work/xtensa-bxt-elf/bin:${PATH}"
> +ENV PATH="/home/sof/work/xtensa-cnl-elf/bin:${PATH}"
> +
> +RUN cd /home/sof && git clone https://github.com/jcmvbkbc/newlib-xtensa.git newlib-xtensa.git && \
> +	cd newlib-xtensa.git && git checkout -b xtensa origin/xtensa && \
> +	for arch in byt hsw bxt cnl; do \
> +		./configure --target=xtensa-${arch}-elf \
>   		--prefix=/home/sof/work/xtensa-root && \
> -	make && \
> -	make install && \
> -	make distclean; \
> -done
> +		make && \
> +		make install && \
> +		make distclean; \
> +	done && \
> +	cd /home/sof/ && sudo rm -rf newlib-xtensa.git
>   
> -USER sof
> -WORKDIR /home/sof/sof.git
> -RUN ./autogen.sh
> -RUN ./configure --enable-rimage
> -RUN make
> -USER root
> -RUN make install
>   
>   # Create direcroties for the host machines sof/soft directories to be mounted.
> -USER sof
> -RUN mkdir -p /home/sof/work/sof
> -RUN mkdir -p /home/sof/work/soft
> +RUN mkdir -p /home/sof/work/sof.git && \
> +    mkdir -p /home/sof/work/soft.git
> +
>   
>   USER sof
>   WORKDIR /home/sof/work/sof.git/
> -
> -# Default to building all.
> -CMD ./scripts/xtensa-build-all.sh



More information about the Sound-open-firmware mailing list