On 6/5/2018 18:43, Xiuli Pan wrote:
From: Pan Xiuli xiuli.pan@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@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 \
libssl-dev \ libtool \libncurses5-dev \
libtool-bin \ pkg-config \ software-properties-common \libtool \
@@ -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 \
--prefix=/home/sof/work/xtensa-root && \./configure --target=xtensa-${arch}-elf \
- 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